从 1 到 n 的数字之和

如果我想找出从 1n 的数字总和,其中 n 是一个自然数,我可以做 1 + 2 + 3 + 4 + ... + (several hours later) + n。或者,我可以写一个 for 循环:

n = 0
for i in range (1, n+1):
    n += i

或者我可以使用一种称为递归的技术:

def recursion(n):
    if n == 1:
        return 1
    return n + recursion(n - 1)

递归优于上述两种方法。递归花费的时间少于写出 1 + 2 + 3 的总和从 1 到 3.对于 recursion(4),递归可用于向后工作:

函数调用:(4 - > 4 + 3 - > 4 + 3 + 2 - > 4 + 3 + 2 + 1 - > 10)

for 循环正在严格地工作:(1 - > 1 + 2 - > 1 + 2 + 3 - > 1 + 2 + 3 + 4 - > 10)。有时递归解决方案比迭代解决方案简单。在实现链表的反转时,这是显而易见的。