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

“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”,“{”又一层层代回去,最后加出正确答案。} 

慕斯王
浏览 110回答 2
2回答

HUH函数

这个就是斐波那契数列。递归就像递推,跟数学上的递推很相似。“又一层层代回去,最后加出正确答案”这句话的意思是,比如算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)两次代入就是所说的一层层代回去

BIG阳

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)希望能帮到你啊!
打开App,查看更多内容
随时随地看视频慕课网APP