原题如下:当N=5时,下列函数的返回值是:

A.5
B7
C8
D10

int foo(int n){
if(n <= 2)
return n:
return foo(n-1)+f(n-2);
}




当年话下
浏览 113回答 3
3回答

暮色呼如

这是个递归函数。n=5时返回值为8答案选C//n的变化&nbsp;//第一次&nbsp;return&nbsp;foo(4)+foo(3);&nbsp;//第二次&nbsp;return&nbsp;foo(3)+foo(2);&nbsp;//因为foo(3)大于2所以还要调用,但后面那个就foo(2)直接返回2,知道foo(2)就返回2&nbsp;//所以结果=2+2+2+2=8

翻翻过去那场雪

这个答案是选C的。递归都是完全可以转化为数学里面的数列来做的,他们都是有一定规律的。你仔细看看,就会发现foo(n)= foo(n-1)+f(n-2)。而当n=1的时候,foo(1)=1当n=2的时候,foo(2)=2所以很容易就推出:foo(3)=foo(2)+foo(1)=2+1=3foo(4)=foo(3)+foo(2)=3+2=5foo(5)=foo(4)+foo(3)=5+3=8所以答案选择C。满意请采纳!

白衣非少年

这是一个 类似于 斐波那契数列 的数列当 n <= 2 时,foo(n) = n当 n > 2 时,foo(n) = foo(n - 1) + foo(n - 2)所以:foo(1) = 1;foo(2) = 2;;&nbsp;foo(3) = foo(2) + foo(1) = 3;foo(4) = foo(3) + foo(2) = 5;foo(5) = foo(4) + foo(3) = 8;后面的以此类推
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java