Last Updated on 2021-08-21 by Clay
問題描述
在 Python 中,為了防止 stack overflow(堆疊溢位,使用過多記憶體導致溢出),我們使用的遞迴是有層數限制的。一旦我們使用超過預設限制的遞迴深度,就會觸發以下的報錯:
RecursionError: maximum recursion depth exceeded
解決這個問題有兩個辦法:
- 重新寫遞迴的演算法(優化)
- 設定遞迴深度限制(雖然不推薦,但這個方法比較快,可以在衡量自己的設備後選擇)
設定遞迴深度
我們可以使用以下程式碼確認目前的遞迴深度:
import sys print(sys.getrecursionlimit())
Output:
1000
基本上,Python 預設的深度就是 1000,而我們是可以透過程式去調整這一深度的。假設現在我們需要設定深度為 2000,那麼我們就在程式的開頭寫下:
sys.setrecursionlimit(2000)
如此一來本來會報錯的程式,這下應該可以正常執行。