PYthon递归函数超过999就开始提示错误

我在测试递归函数,为什么输入999以内都是可以正常运行,一旦大于等于1000就开始提示错误了?

def calc(n):
if n == 1:
return 1
return n+calc(n-1)

print(calc(1000))

1个回答

递归本质上是系统使用一个堆栈实现的。这个堆栈用来保存局部变量和每次返回的地址。
这个堆栈的大小不是无限的,所以递归深度在任何语言上都有一定限制。

具体来说,python是999,或者998。

你的问题人家也遇到了
https://www.cnblogs.com/bincoding/p/8972238.html

解决办法,就是改写成循环,不用递归。
如果确实需要很深的递归深度,可以使用sys模块中的setrecursionlimit()函数修改默认的最大深度限制

weixin_43432501
dixinsanban085 感谢,回答解决了我的疑惑。
12 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!