为什么我的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
相关产品推荐
相关产品推荐

