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

Python递归函数始终返回None:为何未返回预期值?

递归函数返回None的原因分析

你的递归函数之所以返回None,核心问题出在else分支缺少return语句:

原代码:

def countdown(n):
    if n == 0:
        return("Blastoff!")
    else:
        print(n)
        countdown(n-1)

print(countdown(20))

问题拆解

  • 当n == 0时,函数确实会返回字符串"Blastoff!",但这个值只返回给了调用它的上一层递归。
  • 当n != 0时,函数执行完print(n)和递归调用countdown(n-1)后,没有任何显式的return语句。在Python中,函数如果没有指定返回值,默认会返回None。
  • 最外层调用countdown(20)最终会接收到最上层递归返回的None,所以print(countdown(20))会输出None。

修正方案

在else分支中,将递归调用的结果返回出去,让值逐层传递回最外层:

def countdown(n):
    if n == 0:
        return("Blastoff!")
    else:
        print(n)
        return countdown(n-1)  # 新增return,传递递归调用的返回值

print(countdown(20))

这样修改后,每一层递归都会把下一层的返回值传递上来,最终countdown(20)会得到"Blastoff!",并被正确打印。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 06:03:11