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

Python递归函数bounce执行结果先递减后递增的原因是什么

Python bounce 函数运行逻辑解释

你看到的输出先递减再递增,是递归的递推阶段和回溯阶段分别执行打印操作导致的,我们直接拆解代码的执行流程就能明白:

首先是原函数代码:

def bounce (n):
    if n > 0:
        print(n)
        bounce(n-1)
    print(n)

bounce(4)

递推阶段(n从4降到0,生成前半段输出)

每一层函数调用时,只要n>0就会先打印当前n的值,再调用下一层bounce(n-1),当前层的剩余代码会暂停,等下一层返回后再执行:

  • n=4:满足n>0,打印4,调用bounce(3),暂停执行后续代码
  • n=3:满足n>0,打印3,调用bounce(2),暂停执行后续代码
  • n=2:满足n>0,打印2,调用bounce(1),暂停执行后续代码
  • n=1:满足n>0,打印1,调用bounce(0),暂停执行后续代码
  • n=0:不满足n>0,跳过if块内代码,直接执行print(0),打印0,当前层执行完成,返回上一层

这个阶段输出就是:4、3、2、1、0

回溯阶段(n从0升到4,生成后半段输出)

下一层函数返回后,会继续执行当前层剩下的print(n)代码,从最内层往外层逐层返回:

  • 回到n=1的层:执行剩余的print(1),打印1,执行完成返回n=2的层
  • 回到n=2的层:执行剩余的print(2),打印2,执行完成返回n=3的层
  • 回到n=3的层:执行剩余的print(3),打印3,执行完成返回n=4的层
  • 回到n=4的层:执行剩余的print(4),打印4,全部执行结束

这个阶段输出就是:1、2、3、4

两段输出拼接起来就是你看到的最终结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 00:27:03