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

Python链表索引函数返回值始终为None问题求助

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

嗨,我一眼就看穿这个问题啦——这是递归写法里超容易踩的小坑!你的index函数在递归调用的时候没有返回递归的结果,导致除了最底层的递归调用返回了正确值,上层所有函数调用都没传递返回内容,最终默认返回None。

问题根源分析

先看你写的index函数代码:

def index(head, idx=0):
    if idx == 0:
        return head.val
    print(idx)
    index(head.next, idx-1)  # 这里漏掉了return!

当idx不等于0时,你调用了index(head.next, idx-1),但没把这个调用的结果返回给上一层。举个例子:当idx=4时,函数打印4后调用index(head.next, 3);这个调用打印3后再调用index(head.next,2)……直到idx=0时返回head.val,但这个值没有被传递回每一层递归调用,所以最开始的index(link,4)最终拿到的就是None。

修复方案

只需要在递归调用前加上return,把递归结果逐层传递回去就行:

def index(head, idx=0):
    if idx == 0:
        return head.val
    print(idx)
    return index(head.next, idx-1)  # 补上return!

验证修复结果

修改后运行你的代码,输出会变成:

4
3
2
1
5

这就完全正确了——因为create_list创建的链表结构是:link(val=0) -> 1 -> 2 -> 3 -> 4 ->5,index(link,4)对应取第5个节点(从0开始计数,idx=4就是最后一个节点的val=5)。

另外顺嘴提一句,你的create_list函数其实也有同样的“无返回”问题,但因为是通过修改linkedlist.next来构建链表的,所以功能暂时不受影响;如果后续需要用这个函数的返回值,记得也要补上return哦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:31:22