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