为什么此递归Python函数将反向对象作为列表返回?

时间:2019-02-06 10:40:23

标签: python-3.x recursion

我有一个有效的代码,并且功能齐全。 但是,我不明白为什么它会以这种方式起作用,如果你们能向我解释这将是非常棒的。

我了解的是,每次递归都将在堆栈中,直到函数终止为止,因此将保留每次计算的结果。 我不明白的是为什么简单的return []实际上会返回每次递归的结果。

def reverse(li):
    if not li:
        return []
    else:
        return reverse(li[1:]) + [li[0]]

1 个答案:

答案 0 :(得分:1)

递归的概念称为终止条件;确定何时停止递归。满足此条件后,该函数将不再调用自身。在这种情况下,您会在满足终止条件时返回一个列表。

关于返回列表为何如此重要的原因,因为您要将另一个列表[li[0]]附加到reverse()函数的结果中。