我想知道为什么这个斐波那契递归函数有效:
int fibRec(int n)
{
if ((n == 1) || (n == 0))
{
return n;
}
int i = fibRec(n - 1) + fibRec(n - 2);
return i;
}
Run Code Online (Sandbox Code Playgroud)
我了解斐波那契数列是什么,也了解递归函数的作用以及该函数的工作原理。我只是很难理解它为什么有效。我知道,当你将其分解时,你本质上是添加了一堆 0 和 1,如下图所示。
但为什么当我将 5 传递给函数并将所有 0 和 1 添加后,它会等于斐波那契数列中的第 5 个数呢?我以前见过这个问题,但从未真正解释过。答案都只是“因为递归”。是的,我知道什么是递归函数以及它是如何工作的。但是为什么这个递归函数会给出正确的斐波那契数列呢?