有以下程序: #include <iostream> using namespace std; long fib( int n ) { if(n>2) return ( fib( n-1 )+f

admin2009-02-15  31

问题 有以下程序:
    #include <iostream>
    using namespace std;
    long fib( int n )
    {
      if(n>2)
         return ( fib( n-1 )+fib( n-2 ) );
      else
         return 2;
    }
    int main()
      cout<<fib(3)<<end1;
      return 0;
    }
   则该程序的输出结果应该是【  】。

选项

答案4

解析 本题主要考查C++中递归函数。递归函数即自调用函数,在函数体内部直接或间接的自己调用自己,即函数的嵌套调用是函数本身。递归调用分为直接递归调用和间接递归调用两种形式。本题程序为求解典型递归数列Fibonacci数列中任意项值的简化程序(主函数中的调用改成flb(n)即变成求解任意项值)。主函数通过调用 fib()函数,fib()函数内部再通过一个分支结构判断是否进行递归调用或退出递归调用,调用方式为直接递归调用。主函数通过实参将值3赋给fib()函数的形参n,由于 n=3满足if分支语句条件,因此函数进行递归调用,即计算fib(2)和fib(1)的值;将2赋给fib()函数的形参后,由于n=2不满足if分之语句条件,因此程序退出递归,返回2;将1赋给fib()函数的形参后,函数同样返回2。因此函数递归调用的最终结果为返回2+2=4,即fib(3)=4,程序最后输出值为4。
转载请注明原文地址:https://kaotiyun.com/show/dOkp777K
0

最新回复(0)