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

递归函数输出None问题咨询:为何未返回预期列表?

递归函数返回None的问题解决

你的问题出在递归分支没有返回递归调用的结果。当else分支执行func(x)时,你没有把这个递归调用的返回值传递回去,导致最外层的函数调用没有拿到最终的结果,默认返回None。

原代码问题分析

list = []
def func(x):
    x.append(1)
    if len(x) >10:
        return x
    else:
        func(x)  # 这里仅调用递归,但未返回结果

print(func(list))

当递归执行到len(x)>10时,确实会返回目标列表,但这个返回值只会传递给上一层的func(x)调用,而上一层的else分支没有把该值返回出去,逐层往上传递后,最外层函数调用最终没有得到有效返回值,因此输出None。

修正后的代码

只需在else分支里添加return,将递归调用的结果返回即可:

my_list = []  # 建议不要用list作为变量名,避免覆盖Python内置类型
def func(x):
    x.append(1)
    if len(x) > 10:
        return x
    else:
        return func(x)  # 返回递归调用的结果

print(func(my_list))

执行这段代码会输出预期的[1,1,1,1,1,1,1,1,1,1,1]。

额外提示:尽量避免使用list这类内置类型名称作为变量名,否则会覆盖原有的内置功能,引发潜在问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 14:20:21