python - 函数无论如何都返回 None
问题描述
我有这个函数,它应该通过它的索引给出链表节点的值。我可以打印前一行的值,但是当我返回该值时,它会以某种方式变成无。
class ListNode:
def __init__(self, val=0, next_node=None):
self.val = val
self.next = next_node
def create_list(linkedlist, i, j=1):
if i == 0:
return
l = ListNode(j)
linkedlist.next = l
create_list(linkedlist.next, i-1, j+1)
def index(head, idx=0):
if idx == 0:
return head.val
print(idx)
index(head.next, idx-1)
link = ListNode()
create_list(link, 5)
print(index(link, 4))
输出:
4
3
2
1
None
我什至在函数中返回了一个整数,但它也变成了 None。
任何帮助将非常感激。
解决方案
您还必须返回递归调用:
def index(head, idx=0):
if idx == 0:
return head.val
print(idx)
return index(head.next, idx - 1)
你错过了最后一行的回报。
对于其他功能
def create_list(linkedlist,i,j=1):
if i == 0:
return linkedlist # missing object to return in terminal case
l = ListNode(j)
linkedlist.next = l
return create_list(linkedlist.next,i-1,j+1) # missing return on recursive call
推荐阅读
- javascript - Jquery搜索过滤相同的ul li列表
- python - '太多的值要解压',同时迭代一个 for 循环
- javascript - 如何在 Express 服务器(NodeJs)上访问 formData 值对
- azure - Azure Kubernetes - Istio Egress 不工作
- c++ - 瓦片地图SFML上的运动场显示
- javascript - 如何在 FormGroup 中动态生成 FormControl?
- javascript - 获取当月的第一天和最后一天
- maven - Mule 4 : Mule 4 域项目可以用作其他 mule 应用程序的 Maven 父项目吗?
- arm - STM32 ST-LinkV2 st-flash1.6.1 无法上传 - Windows 10
- c - 我的 for 循环在我的代码中无法正常工作,它在第一个循环后一直停止?