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

递归为何未停止?关于给定Python递归代码的执行逻辑疑问

递归代码执行逻辑解答

你的代码与输出

代码

def tri_recursion(k):
    if k > 0:
        result = k + tri_recursion(k - 1)
        print(result)
    else:
        result = 0
    return result


print("Recursion Example Results")
tri_recursion(6)

输出

1
3
6
10
15
21

疑问解答

1. 为何打印1后仍继续执行?

递归的执行是**先“递进去”,再“退回来”**的过程:

  • 调用tri_recursion(6)时,它会先依次调用tri_recursion(5)、tri_recursion(4)……直到tri_recursion(0)。这一阶段所有外层调用都卡在result = k + tri_recursion(k-1)这行,等着内层调用返回结果。
  • 当tri_recursion(0)返回0后,才进入“退回”阶段:先回到tri_recursion(1),算出result=1+0=1并打印;接着回到tri_recursion(2),算出result=2+1=3并打印;以此类推直到tri_recursion(6)完成计算和打印。
    所以打印1只是“退回”阶段的第一步,后续还有多层递归未执行完,自然会继续运行。

2. 为何k=0时没打印,却输出了1?

这个1不是k=0的结果,是k=1那一层的计算值:

  • k=0时进入else分支,仅返回0,确实不会触发打印。
  • 但这个0会返回到上一层(k=1的调用),代入result = 1 + tri_recursion(0)得到result=1+0=1,之后执行k=1那一层的print(result),所以你看到的1是k=1的计算结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 12:02:10