请教高手一个递归的问题

来源:百度知道 编辑:UC知道 时间:2024/06/06 16:28:01
73、一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少, 用递归算法实现。
答:public class MainClass
{
public static void Main()
{
Console.WriteLine(Foo(30));
}
public static int Foo(int i)
{
if (i <= 0)
return 0;
else if(i > 0 && i <= 2)
return 1;
else return Foo(i -1) + Foo(i - 2);
}
}

}

请问,这是什么意思呢?答案是8W多,这是为什么呢~
else return Foo(i -1) + Foo(i - 2);
Foo定义了之后,直接就这样用,就是递归吗

递归 简单点说就是方法Foo中再次调用自身Foo

public static int Foo(int i)
{
//。。。
//else return Foo(i -1) + Foo(i - 2);
}

这是著名的 菲波那切 数列啊, 规律是 从 第三项开始, 等于 前面2项之和 啊

你明白了吧