首页 > 试题广场 >

如下程序的输出结果是?

[单选题]
如下程序的输出结果是
#include <iostream>
using namespace std;

long fun(int n) {
    if (n > 2)
        return (fun(n - 1) + fun(n - 2));
    else
        return (n);
}

int main() {
    int i;
    cout << "Needs an integer: ";
    cin >> i;
    cout << endl;
    cout << fun(i) << endl;
}

当分别输入4 2时,输出结果分别是?
  • 5,1
  • 4,2
  • 5,2
  • 6,2
推荐
答案:C
解释:当输入2时, fun(2)返回2,很容易明白。
      当输入4时,fun(4)返回: fun(3)+fun(2) = fun(2)+fun(1)+2 = 2+1+2 = 5
编辑于 2015-01-07 15:42:38 回复(3)
答案:C
当n=2时, n>2为假 fun(2)=2
当n=4时,fun(4)= fun(3)+fun(2) 
                f(3)=f(2)+f(1)
                f(2)=2 f(1)=1
发表于 2021-03-21 09:48:17 回复(0)
选错了
发表于 2015-09-18 18:56:34 回复(0)
可以用树状图来解释
fun(2)这个没什么疑问
                                                            fun(4)//返回2+1+2
                                                    ↙                       ↘
                                           fun(3) //返回2+1              fun(2)//返回2
                                ↙                       ↘
                            fun(2)                    (fun)1
发表于 2018-07-17 10:35:49 回复(1)
【解释】
斐波那切数列:fun(n)=fun(n - 1) + fun(n - 2),n>=2
fun(0)=1,fun(1)=1
fun(2)=fun(0)+fun(1)=1+1=2
fun(3)=fun(2)+fun(1)=1+2=3
fun(4)=fun(2)+fun(3)=2+3=5
...
fun(n)=fun(n - 1) + fun(n - 2)
答案选C
斐波那切数列是经典的递归问题
发表于 2019-11-13 09:33:44 回复(0)
将return(n)都看成return 2了。。。
发表于 2018-10-23 00:32:15 回复(0)