我有一個問題關於從Python文檔sys.setrecursionlimit()Python的最大遞歸,約sys.setrecursionlimit問題()
此功能:
設置Python解釋器的最大深度堆棧來限制。此限制可防止無限遞歸導致C堆棧溢出並導致Python崩潰。 儘可能高的限制取決於平臺。當用戶需要深度遞歸的程序和支持更高限制的平臺時,用戶可能需要將限制設置得更高。這應該謹慎處理,因爲太高的限制可能會導致崩潰。
這裏是我的問題:
讓我們這個沒用的遞歸函數:
def rec(N):
if N==0:
return 1
else:
return rec(N-1);
現在讓我們來設置最大遞歸100:
sys.setrecursionlimit(100)
如果我嘗試rec(99)
(100遞歸調用),我得到:
RuntimeError: maximum recursion depth exceeded
要計算rec(99)我需要將遞歸限制設置爲105
這是爲什麼?
Thx,我想我應該仔細閱讀定義,而不是看功能的名稱 –