眾所周知,如果你有這樣的功能:
def foo():
foo()
該函式將呼叫自身 1000 次,然后你會得到一個RecursionError例外。
但是如果你有一千零一個不同的函式可以互相呼叫呢?即a()呼叫b()呼叫c()等。
你會在第 1001 次通話中遇到任何錯誤嗎?呼叫堆疊深度將與遞回情況相同,即使沒有任何實際遞回。
uj5u.com熱心網友回復:
RecursionError超出呼叫堆疊時拋出。這通常是由于遞回而發生的,但通常也可能發生。
為了測驗這一點,我們可以撰寫一個快速for回圈來生成數百個相互呼叫的不同函式。
function = lambda: "Success!"
for _i in range(999):
def new_function(f=function):
f()
function = new_function
print(function())
在 999,這失敗了RecursionError(千分之一的函式呼叫是lambda,而不是 for 回圈的一部分)。將該回圈計數器更改為 998,它運行良好。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/523493.html
標籤:Python递归
上一篇:查找序列中的第n個項
