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

admin2010-12-16  27

问题 有以下程序
   #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)<<endl;
       return 0;
   }
   则该程序的输出结果应该是______。

选项

答案4

解析 本题主要考查C++中递归函数,主函数通过调用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/uLVp777K
0

最新回复(0)