繁体   English   中英

python tail递归函数不返回

[英]python tail recursive function doesn't return

我有一个修改列表的函数,但是它不返回任何内容。 这是一个长函数,但举个例子,以下有同样的问题。 为什么不返回任何东西?

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

return inventedfunction(list2)替换inventedfunction(list2) return inventedfunction(list2) 如果仅在没有return语句的情况下调用它,则结果将被丢弃。

工作代码:

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

您没有说函数应该做什么,所以我假设“ inventedfunction”的意思是“ inverted function”。 即使这是不正确的,想法也是一样的。 如果不是这种情况,或者您听不懂,请回传更多信息。

如果len(list2)!= 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])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM