好的,所以我很难确切了解该程序的工作方式:

#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,我不知道该怎么办。很抱歉提出这样的基本问题,但是我对此感到很困惑,我觉得我很想念的东西。

最佳答案

正如大家在这里提到的,这基本上是递归。

为了了解该程序的工作原理,我制作了以初始fibIndex5的递归树。

           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

10-04 14:54