在python中解释一个递归函数

时间:2014-01-21 08:36:38

标签: python recursion python-3.x

这是python3中的递归函数。我有一种感觉,我不完全理解return语句中的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声明中的内容。

1 个答案:

答案 0 :(得分:3)

我相信你被整个事情的*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 (condition) else (False)

head + sum(tail) if tail else head

添加头部列表其余部分的总和。所以sum不断打破它,然后最终点击基本情况,即如果列表中只有一个项目,则返回该项目。 This link将更详细地解释这是如何运作的。