我有一个有效的代码,并且功能齐全。 但是,我不明白为什么它会以这种方式起作用,如果你们能向我解释这将是非常棒的。
我了解的是,每次递归都将在堆栈中,直到函数终止为止,因此将保留每次计算的结果。 我不明白的是为什么简单的return []实际上会返回每次递归的结果。
def reverse(li):
if not li:
return []
else:
return reverse(li[1:]) + [li[0]]
答案 0 :(得分:1)
递归的概念称为终止条件;确定何时停止递归。满足此条件后,该函数将不再调用自身。在这种情况下,您会在满足终止条件时返回一个列表。
关于返回列表为何如此重要的原因,因为您要将另一个列表[li[0]]
附加到reverse()
函数的结果中。