好的,所以我很难确切了解该程序的工作方式:
#include <iostream>
using namespace std;
int getFibNumber(int fibIndex)
{
if(fibIndex < 2)
return fibIndex;
else
return getFibNumber(fibIndex - 1) + getFibNumber(fibIndex - 2);
}
int main(int argc, char** argv)
{
cout << "Enter 0-based index of desired Fibonacci number: ";
int index = 0;
cin >> index;
cout << "Fibonacci number is: " << getFibNumber(index) << endl;
return 0;
}
具体来说,“ getFibNumber(...)”在重申时会做什么(如果这是正确的单词)?如果传入的整数“ fibIndex”大于或等于2,我不知道该怎么办。很抱歉提出这样的基本问题,但是我对此感到很困惑,我觉得我很想念的东西。
最佳答案
正如大家在这里提到的,这基本上是递归。
为了了解该程序的工作原理,我制作了以初始fibIndex
为5
的递归树。
5 5 calls 4 and 3.
/ \
4 3 4 calls 3 and 2. 3 calls 2 and 1.
/ \ / \
3 2 2 1 1 is base case, returns 1.
/ \ / \ / \
2 1 1 0 1 0 2 is not base case. So calls 1 and 0.
/ \
1 0