错误
今天在用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层。程序没有报错,但是会自动退出。如果你知道为什么,请留言。