发布网友 发布时间:2024-09-25 15:04
共5个回答
热心网友 时间:2024-10-31 07:57
这是个递归函数。n=5时返回值为8
答案选C
//n的变化热心网友 时间:2024-10-31 07:51
说下我的理解吧
首先这个题目最下面 return foo(n-1)+f(n-2); 后面的这个f()方法应该是印错了;
正确的题目应为:当n=5时,下列函数的返回值是:
int foo(int n){
if(n <= 2)
return n:
return foo(n-1)+foo(n-2);
}
先说下 这个foo()方法大致的意思吧:
传入初始数据 n=5;
往下走 判断 n是否大于等于2 ;
结果5大于等于2 跳出 if方法;
继续走下面的方法 foo(5-1)+foo(5-2);
得出 foo(4)+foo(3);
那我们怎么知道 方法foo(4)+foo(3)等于多少呢?
那就继续把参数传进方法计算出结果看看不就知道了吗?!
先计算 foo(3) :
传入初始数据 n=3;
往下走 判断 n是否大于等于2 ;
结果3大于等于2 跳出 if方法;
得出 foo(2)+foo(1);
那么还是没计算出结果! 继续!
计算 foo(2):
传入初始数据 n=2;
往下走 判断 n是否大于等于2 ;
结果2等于2 执行 if方法;
得出 foo(2) 的 结果为 2;
可以得出 :
当 n <= 2 时,foo(n) = n
当 n > 2 时,重新执行方法foo(n) = foo(n - 1) + foo(n - 2)
foo(3)=foo(2) + foo(1)= 3;
foo(4)= foo(3) + foo(2)= 5;
foo(5)= foo(4)+ foo(3)= 8;
热心网友 时间:2024-10-31 07:51
这是一个 类似于 斐波那契数列 的数列热心网友 时间:2024-10-31 07:51
实测的运行结果,8
热心网友 时间:2024-10-31 07:54
这个答案是选C的。