为了账号安全,请及时绑定邮箱和手机立即绑定

先看题目:数列的规律是从第3个数开始,每个数是前两个数的和,最后那句不明白啊

先看题目:数列的规律是从第3个数开始,每个数是前两个数的和,最后那句不明白啊

慕斯王 2023-01-03 16:12:51

“public static int Foo(int i)”即定义一个公共静态函数体,输入一个整数(第X位数),返回值;
“if (i <= 0) return 0;”预防输入0或负数,输入则返回“0”;
“else if (i > 0 && i <= 2) return 1;”如果输入第1位或第2位,则返回“1”(如题);
“else return Foo(i - 1) + Foo(i - 2);”输入其它的数则返回前两个数的值。注意:因为求数列中每一个值都是调用该函数,所以求前两个数的值就又要调用2个这个函数。这就是递归(调用自身)。
eg:求Foo(30)的值,则返回Foo(29) + Foo(28)的值,其中又要调用Foo(29) 和Foo(28)求它们的值,Foo(29)又要调用Foo(28)和Foo(27),Foo(28)又要调用Foo(27)和Foo(26)……直到调用Foo(2)和Foo(1)会返回“1”,“{”又一层层代回去,最后加出正确答案。} 

查看完整描述

2 回答

?
HUH函数

TA贡献0条经验 获得超4个赞

这个就是斐波那契数列。
递归就像递推,跟数学上的递推很相似。
“又一层层代回去,最后加出正确答案”
这句话的意思是,比如算Foo(5)
(a) Foo(5) = Foo(4)+Foo(3)

(b) Foo(4) = Foo(3)+Foo(2)
(c) Foo(3) = Foo(2)+Foo(1) = 1 + 1 = 2;

然后把(c)的结果代入到(b)中,
(b) Foo(4) = Foo(3)+Foo(2) = 2 + 1 = 3
然后把(b)和(c)的结果代入到(a)中,

(a) Foo(5) = Foo(4)+Foo(3) = 3 + 2 = 5

最后得到Foo(5)
两次代入就是所说的一层层代回去

查看完整回答
反对 回复 2023-01-06
?
BIG阳

TA贡献1591条经验 获得超6个赞

public static int Foo(int Num)
{
if(Num<=0)

{
return 0;

}

if(Num<=2 && Num>0)

{
return 1;

}

else
{
return Foo(n-1)+Foo(n-2);

}

}
调用
Foo(30)
希望能帮到你啊!


查看完整回答
反对 回复 2023-01-06

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信