python尾部递归函数不返回

2024-10-02 06:31:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个修改列表的函数,但是它不返回任何内容。这是一个很长的函数,但是举个例子,下面的函数也有同样的问题。为什么什么都不退?你知道吗

def inventedfunction(list1):
    list2=list1[:-1]
    if len(list2)!=1:
        inventedfunction(list2) 
    else:
        return list2  

Tags: 函数内容列表lenreturnifdefelse
2条回答

return inventedfunction(list2)替换inventedfunction(list2)。如果只调用它而不使用return语句,则会抛出结果。你知道吗

工作代码:

def inventedfunction(list1):
    list2=list1[:-1]
    if len(list2)!=1:
        return inventedfunction(list2) 
    else:
        return list2 

你没有说函数应该做什么,所以我假设“inventedfunction”意味着“invertedfunction”。即使这是不正确的,想法也是一样的。如果不是这样的情况或你不明白,然后发回更多的信息。你知道吗

如果len(list2)的话,你不会得到任何返回,也不会返回任何东西(None)!= 1. 您还需要创建第二个列表来保存从发送给函数的列表中删除的数字,并根据代码的结构返回更新后的列表。你知道吗

def inventedfunction(list1, new_list=[]):
    ## at the least add print statements so you know what is happening
    print new_list, "  ->",  list1
    list2=list1[:-1]
    new_list.append(list1[-1])  ## append item removed from list1  > list2
    if len(list2):
        new_list, list2=inventedfunction(list2)
    return new_list, list2  ## both updated lists returned

print inventedfunction([1, 2, 3, 4, 5])

相关问题 更多 >

    热门问题