python默认的递归深度是很有限的,大概是900多的样子,当递归深度超过这个值的时候,就会引发这样的一个异常。RuntimeError: maximum recursion depth exceeded.
def recursion(n):
if (n <= 0):
return
print (n)
recursion(n - 1)
#window下:
recursion(979) #正常运行
recursion(980) #报错,RuntimeError: maximum recursion depth exceeded
#linux(centos7 python3.6.5)下:
recursion(996) #正常运行
recursion(997) #报错,RuntimeError: maximum recursion depth exceeded
解决的方式是手工设置递归调用深度,方式为
import sys
sys.setrecursionlimit(10000) #例如这里设置为一万
sys.setrecursionlimit() 只是修改解释器在解释时允许的最大递归次数,此外,限制最大递归次数的还和操作系统有关,经过测试:
windows下可设置最大迭代次数约3200次,运行recursion(4000),到n到800多解释器自动关闭了,所以大概3200次;
linux下可设置最大迭代次数约为24900次