📅  最后修改于: 2023-12-03 14:58:31.858000             🧑  作者: Mango
考虑下面的递归过程:
def f(n):
if (n<=2):
return n
else:
return f(n-1) + f(n-2) + f(n-3)
对于$n=6$,它的输出值是什么?
这是一道比较经典的递归问题,需要我们看出其中的规律,对于大部分程序员来说应该不难:
对于$n \le 2$,返回$n$的值。
对于$n > 2$,返回$f(n-1) + f(n-2) + f(n-3)$的值。
那么当$n=6$时,我们可以这样求解:
$f(6) = f(5) + f(4) + f(3)$
$f(5) = f(4) + f(3) + f(2)$
$f(4) = f(3) + f(2) + f(1)$
$f(3) = f(2) + f(1) + f(0)$
其中$f(0) = 0$,$f(1) = 1$,$f(2) = 2$。
将上述式子带入$f(6)$可以得到:
$f(6) = 11$
因此,当$n=6$时,函数f(n)
的输出值应该是11。
def f(n):
if (n<=2):
return n
else:
return f(n-1) + f(n-2) + f(n-3)
print(f(6)) # 11
递归问题需要我们把握好递归的特性,找到规律之后才能正确求解,建议多练习。