首页 > 解决方案 > 函数无论如何都返回 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。

任何帮助将非常感激。

标签: pythonreturn

解决方案


您还必须返回递归调用:

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

推荐阅读