Python報錯:RecursionError: maximum recursion depth exceeded in comparison

錯誤

今天在用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層。程序沒有報錯,但是會自動退出。如果你知道爲什麼,請留言。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章