“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貢獻1836條經驗 獲得超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)
兩次代入就是所說的一層層代回去

BIG陽
TA貢獻1859條經驗 獲得超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)
希望能幫到你?。?/p>
添加回答
舉報
0/150
提交
取消