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

基础递归结果不符合预期,为何未出现负数递减输出?

递归函数执行逻辑解析

你的递归函数代码

def print_numbers(n):
    if n == 1:
        print(n)
        print("recursion over")
    else:
      print_numbers(n-1)
      print(n)

print_numbers(10) 

实际输出结果

1
recursion over
2
3
4
5
6
7
8
9
10

问题解答

为什么输出是递增而非递减到负数?

你的函数里明确设置了递归终止条件:当n == 1时,只会执行打印操作,不会再调用自身。

递归的执行分为两个阶段:

  • 递推阶段:调用print_numbers(10)时,因为10≠1,会先调用print_numbers(9);print_numbers(9)同样触发else分支,调用print_numbers(8)……这个过程一直持续到print_numbers(1),此时触发if分支,打印1和"recursion over",递推阶段结束。
  • 回归阶段:递推到终止条件后,程序会逐层回到上一层未执行完的函数中。比如print_numbers(1)执行完后,回到print_numbers(2),执行它的print(n)打印2;接着回到print_numbers(3)打印3……直到回到最开始的print_numbers(10),打印10。

整个流程是先递推到终止点,再逐层回归打印,所以输出是递增的。而不会递减到负数,因为n=1时就停止了递归调用,不会触发print_numbers(0)或负数的调用。

必须写return或者正式终止代码吗?

不需要额外写return语句。在Python中,函数执行完所有语句后会自动返回None。你的代码已经通过if n == 1设置了明确的终止条件,这才是防止递归无限执行的核心——只要终止条件能被触发,递归就会停止,不需要刻意写return来终止。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 03:11:52