You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Python中未达到最大递归次数?该数值是否为上限?

问题分析与解答

测试代码

try:
    start = 0
    def recursion():
        global start
        def repeat():
            global start

            print('hello world')
            start += 1
            print(recursion())
            
        print(repeat())

    print(recursion())
    
except RecursionError:
    print('you eached the limit')
    print(' ')
    print('recursion :',start, 'times')

运行结果

hello world
hello world
you eached the limit

recursion : 497 times

问题解答

  • 497不是Python的最大递归次数。Python默认的递归调用栈深度限制是1000,你可以通过import sys; print(sys.getrecursionlimit())查看当前系统的递归限制值。
  • 你的代码逻辑导致计数和实际栈深度不匹配:每一次start +=1后,会调用recursion(),而recursion()内部又会调用repeat()——相当于每增加1次start计数,调用栈会新增两层(recursion -> repeat -> 下一个recursion)。当栈深度接近1000的限制阈值时触发RecursionError,此时start的计数刚好到497(497*2=994,加上初始的几层调用,总栈深度就达到了限制)。
  • 若要测试真实的最大递归次数,可以用最简递归函数验证,比如:
    import sys
    count = 0
    def simple_recursion():
        global count
        count +=1
        simple_recursion()
    try:
        simple_recursion()
    except RecursionError:
        print(f"实际递归次数:{count}")
        print(f"系统递归限制:{sys.getrecursionlimit()}")
    
    运行后会得到接近1000的计数(通常是997或998,因为初始调用栈已有几层)。

内容的提问来源于stack exchange,提问作者user19944660

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 16:15:27