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

无法理解Python递归程序,请求解释tri_recursion代码执行逻辑

拆解这段Python递归代码的执行过程

嘿,我来帮你一步步理清楚这段递归代码到底是怎么跑的,递归刚开始确实容易绕晕,咱们慢慢来:

首先先把代码清晰列出来:

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

tri_recursion(6)

核心概念:递归的"出口"和"回溯"

递归的关键是有终止条件(不然会无限调用自己直到内存溢出),这里的终止条件就是k <= 0的时候返回0。然后递归会先一层层"深入"到终止条件,再一步步"回溯"计算结果。

详细执行步骤

咱们从调用tri_recursion(6)开始,一步步跟踪:

1. 逐层深入到终止条件

  • 调用tri_recursion(6):k=6>0,需要计算6 + tri_recursion(5),但tri_recursion(5)还没执行完,所以当前函数暂停,先去执行tri_recursion(5)
  • 调用tri_recursion(5):k=5>0,计算5 + tri_recursion(4),暂停,执行tri_recursion(4)
  • 调用tri_recursion(4):k=4>0,计算4 + tri_recursion(3),暂停,执行tri_recursion(3)
  • 调用tri_recursion(3):k=3>0,计算3 + tri_recursion(2),暂停,执行tri_recursion(2)
  • 调用tri_recursion(2):k=2>0,计算2 + tri_recursion(1),暂停,执行tri_recursion(1)
  • 调用tri_recursion(1):k=1>0,计算1 + tri_recursion(0),暂停,执行tri_recursion(0)
  • 调用tri_recursion(0):k=0不满足k>0,所以result=0,返回0给上一层的tri_recursion(1)

2. 回溯计算并打印结果

现在开始从最内层往回计算,每一层拿到返回值后完成自己的计算,然后打印结果:

  • 回到tri_recursion(1):result = 1 + 0 = 1,打印1,返回1给tri_recursion(2)
  • 回到tri_recursion(2):result = 2 + 1 = 3,打印3,返回3给tri_recursion(3)
  • 回到tri_recursion(3):result = 3 + 3 = 6,打印6,返回6给tri_recursion(4)
  • 回到tri_recursion(4):result = 4 + 6 = 10,打印10,返回10给tri_recursion(5)
  • 回到tri_recursion(5):result = 5 + 10 = 15,打印15,返回15给tri_recursion(6)
  • 回到tri_recursion(6):result = 6 + 15 = 21,打印21,返回21

所以最终控制台的输出顺序是:

1
3
6
10
15
21

总结

这段代码本质上是用递归的方式计算1到k的累加和,公式就是k*(k+1)/2,比如k=6时,6*7/2=21,和咱们计算的结果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 12:27:50