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

Python递归函数为何输出末尾为None而非预期的10?

递归函数返回值问题解析

先看你的原代码:

def add_one(num):
    if num >= 9:
        return num + 1

    total = num + 1
    print(total)

    add_one(total)

mynewtotal = add_one(0)
print(mynewtotal)

输出结果:

1
2
3
4
5
6
7
8
9
None

问题原因

当递归执行到add_one(9)时,确实会进入if分支返回10,但这个返回值只会传递给调用它的上一层函数——也就是add_one(8)里的add_one(total)调用。而add_one(8)在执行完这个调用后,没有把拿到的10继续向上返回,Python中函数如果没有显式的return语句,执行完毕后会默认返回None。

以此类推,add_one(7)调用add_one(8)后也不会返回结果,同样返回None,直到最开始的add_one(0)最终返回None,这就是你看到末尾输出None的原因。

解决原理

给add_one(total)添加return,也就是改成return add_one(total),这样每一层递归函数都会把下层调用的返回值传递给上一层。最终最外层的add_one(0)就能拿到add_one(9)返回的10,打印mynewtotal时就会输出预期的10。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 04:52:09