錯誤
今天在用python寫一個遞歸查詢數據庫的程序時,報了一個錯誤:
RecursionError: maximum recursion depth exceeded in comparison
錯誤的大致意思就是遞歸超過了最大的深度。
原因
查詢過相關文檔和資料後才發現了問題原因,python的遞歸深度是有限制的,默認爲1000。當遞歸深度超過1000時,就會報錯。
解決辦法
可以將遞歸的深度修改的大一些,即可解決問題,但是還是建議在程序中不要使用太深的遞歸層數。
import sys
sys.setrecursionlimit(100000) #例如這裏設置爲十萬
補充測試
由於對最大遞歸層數產生興趣,於是我在自己電腦上用以下代碼做了測試:
def recursion(depth):
depth += 1
print(depth)
recursion(depth)
recursion(0)
反覆測試的結果顯示,最大遞歸的層數到達997層時即會出現報錯的提示。
補充測試2
在修改最大遞歸層數爲100000後,再執行上面的代碼,發現最多也只是可以遞歸到第3220層。程序沒有報錯,但是會自動退出。如果你知道爲什麼,請留言。