我在测试递归函数,为什么输入999以内都是可以正常运行,一旦大于等于1000就开始提示错误了?
def calc(n):
if n == 1:
return 1
return n+calc(n-1)
print(calc(1000))
我在测试递归函数,为什么输入999以内都是可以正常运行,一旦大于等于1000就开始提示错误了?
def calc(n):
if n == 1:
return 1
return n+calc(n-1)
print(calc(1000))
递归本质上是系统使用一个堆栈实现的。这个堆栈用来保存局部变量和每次返回的地址。
这个堆栈的大小不是无限的,所以递归深度在任何语言上都有一定限制。
具体来说,python是999,或者998。
你的问题人家也遇到了
https://www.cnblogs.com/bincoding/p/8972238.html
解决办法,就是改写成循环,不用递归。
如果确实需要很深的递归深度,可以使用sys模块中的setrecursionlimit()函数修改默认的最大深度限制