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

递归调用与非递归调用是否有独立的调用树深度限制?

链式函数调用与递归的栈深度限制问题

会触发RecursionError异常。

Python的递归深度限制针对的是整个调用栈的总深度,而非“同一个函数重复调用的次数”。默认情况下,sys.getrecursionlimit()返回的阈值大概是1000(不同环境可能有小幅差异),这个阈值限制的是调用栈中栈帧的总数——不管这些栈帧来自同一个函数的递归调用,还是不同函数的链式调用,只要栈帧数量超过阈值,就会触发异常。

举个直观的例子:如果有1001个函数依次链式调用(a调用b,b调用c……直到第1001个函数),当调用最开始的a()时,调用栈会依次压入a、b、c……直到第1001个函数的栈帧,此时栈深度达到1001,超过了默认的1000限制,就会抛出RecursionError。

递归的本质其实就是同一个函数反复向调用栈压入栈帧,和不同函数链式压栈的原理完全一致,所以两者共享同一个栈深度阈值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 22:21:38