解释python中的一个递归函数
这是python3中的一个递归函数。我有一种感觉,我不完全理解返回语句中的解释python中的一个递归函数,python,recursion,python-3.x,Python,Recursion,Python 3.x,这是python3中的一个递归函数。我有一种感觉,我不完全理解返回语句中的ifelse逻辑 items = [3,5,8,6,1,2,10] def sum(items): head, *tail = items return head + sum(tail) if tail else head 请解释一下return语句中发生的事情。我相信你被整件事的*tail部分弄糊涂了: >>> items = [3,5,8,6,1,2,10] >>>
if
else
逻辑
items = [3,5,8,6,1,2,10]
def sum(items):
head, *tail = items
return head + sum(tail) if tail else head
请解释一下
return
语句中发生的事情。我相信你被整件事的*tail
部分弄糊涂了:
>>> items = [3,5,8,6,1,2,10]
>>> head, *tail = items
>>> head
3
>>> tail
[5, 8, 6, 1, 2, 10]
现在,当您到达列表的末尾时,所发生的情况是,列表中只有一项*tail
返回一个空列表:
>>> items = [3]
>>> head, *tail = items
>>> head
3
>>> tail
[]
在这种情况下,函数只返回head
的值
因此,为了解释您的三元语句,(True)if(条件)else(False)
:
将头添加到列表其余部分的总和。因此,
sum
不断地将其分解,然后最终命中基本大小写,即,如果列表中只有一项,则返回该项。将更详细地解释这是如何工作的。-1标题是一个问题,还是一个顺序?递归,adj:参见递归。谢谢,我被return{var}弄糊涂了。如果a else B
语法与return一起在一行中使用时看起来相当令人费解。
head + sum(tail) if tail else head