[英]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.