Skip to content

[已解決][Python] RecursionError: maximum recursion depth exceeded

問題描述

在 Python 中,為了防止 stack overflow(堆疊溢位,使用過多記憶體導致溢出),我們使用的遞迴是有層數限制的。一旦我們使用超過預設限制的遞迴深度,就會觸發以下的報錯:

RecursionError: maximum recursion depth exceeded

解決這個問題有兩個辦法:

  1. 重新寫遞迴的演算法(優化)
  2. 設定遞迴深度限制(雖然不推薦,但這個方法比較快,可以在衡量自己的設備後選擇)

設定遞迴深度

我們可以使用以下程式碼確認目前的遞迴深度:

import sys
print(sys.getrecursionlimit())


Output:

1000

基本上,Python 預設的深度就是 1000,而我們是可以透過程式去調整這一深度的。假設現在我們需要設定深度為 2000,那麼我們就在程式的開頭寫下:

sys.setrecursionlimit(2000)



如此一來本來會報錯的程式,這下應該可以正常執行。


References


Read More

Tags:

Leave a Reply