这个c ++函数如何工作?

时间:2018-02-06 22:53:52

标签: c++

#include <cstdlib>

#include <iostream>

using namespace std;

int myFunction(int n)
{
    int x;
    if (n==1 || n==2)
       x = 1;
    else
        x = myFunction(n-2) + myFunction(n-1);
    return x;
}

int main(int argc, char *argv[])
{
    int n,a;
    n = 7;
    a = myFunction(n);
    cout << "x is: " << a; 

    system("PAUSE");
    return EXIT_SUCCESS;
}

此输出为&#34; x为:13&#34;。 当我做n = 7时,如何获得x = 13? 似乎该函数重复了若干次,直到x = 1。

1 个答案:

答案 0 :(得分:1)

我将引导您完成一个更简单的示例,其中函数为4,但整体概念对于7也是相同的。

首先致电:myFunction(4)并在函数n = 4内。

由于n不等于1或2,我们跳到其他地方:

x = myFunction(3) + myFunction(2);
x = myFunction(1) + myFunction(2) + 1; // If there is a 1, that means 
                                       // that we went to the if 
                                       // clause, not the else, since
                                       // n was either 1 or 2
x = 1 + 1 + 1;
x = 3;

此概念称为recursion,有时可能非常有用。您的函数目前计算第n个斐波纳契数。

在旁注中,您应该了解使用system("PAUSE");bad idea的原因。