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

为什么我的Python递归函数无法返回预期列表?

问题解决:递归函数返回None但print结果正确

你的代码核心问题是递归调用时没有返回结果:
当nod不为None时,你执行了convert_to_list_rec(nod.next, list),但没有把这个递归调用的结果返回出去。当前函数执行完这行后没有后续return语句,Python会默认返回None,这就是你拿到的arr为None的原因。

另外还有个容易踩的坑:你使用了list=[]作为函数默认参数,这是可变默认参数,多次调用函数时这个列表会被复用,导致后续调用结果不符合预期。

修改后的代码如下:

class listNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next

a = listNode(1)
b = listNode(2)
c = listNode(4)
a.next = b
b.next = c  # 补上链表节点的关联,否则递归只会处理第一个节点

def convert_to_list_rec(nod, list=None):
    # 用None作为默认值,每次调用初始化新列表,避免复用问题
    if list is None:
        list = []
    if nod == None:
        print(list)
        return list
    list.append(nod.val)
    # 递归调用时返回结果,把最终列表传递回来
    return convert_to_list_rec(nod.next, list)


arr = convert_to_list_rec(a)
print(arr)  # 现在会输出[1,2,4]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 21:39:18