dixinsanban085
2018-10-22 16:19
采纳率: 100%
浏览 730

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

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

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

print(calc(1000))

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • threenewbee 2018-10-22 16:29
    已采纳

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

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

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

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

    已采纳该答案
    打赏 评论

相关推荐 更多相似问题