在斐波那契数列中,序列中前2个数之后的每个数都是前2个数的和:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ...
当您编写递归函数时,您明确处理基本情况(在您的情况下为fibo(0) 和fibo(1)),然后通过调用您正在编写的函数计算其他任何内容,通过以下方式构建以后的结果对早期的进行操作。
根据定义,在序列中的前 2 个数字之后,斐波那契数是前 2 个数字的总和。换句话说,fibo(n) = fibo(n-1) + fibo(n-2)。这就是这行代码的作用:
fibo(num-1) + fibo(num-2)
它通过调用前两个数字自身(即“递归”)并将它们相加来返回 fibo(num) 的值。
因为它们是基本情况,所以我们知道 fibo(0) 将为 0,而 fibo(1) 将为 1。让我们看看 fibo(4) 是如何工作的:
fibo(4) = fibo(3) + fibo(2)
fibo(4) = (fibo(2) + fibo(1)) + (fibo(1) + fibo(0))
= (fibo(2) + 1 ) + ( 1 + 0 )
= (fibo(2) + 2)
= ((fibo(1) + fibo(0)) + 2
= 1 + 0 + 2
= 3
因此,程序最终通过将每个计算分解为更简单的问题来计算正确的结果,直到达到已定义答案的基本情况。请注意,这不是很有效,因为 fibo 被调用 9 次来计算 fibo(4)。