Fibonacci数列:斐波那契数列也叫兔子数列:
由来:
如果一对兔子每月能生一对小兔(一雄一雌),而每对小兔在牠出生後的第三个月裡,又能开始生一对小兔,假定在不发生死亡的情況下,由一对出生的小兔开始,50个月后会有多少对兔子?
在第一个月时,只有一对小兔子,过了一个月,那对兔子成熟
了,在第三个月时便生下一对小兔子,这时有兩对兔子。再过
多一个月,成熟的兔子再生一对小兔子,而另一对小兔子长大
,有三对小兔子。如此推算下去,我们便发現一个規律:
时間(月)
|
初生兔子(对)
|
成熟兔子(对)
|
兔子總數(对)
|
1
|
1
|
0
|
1
|
2
|
0
|
1
|
1
|
3
|
1
|
1
|
2
|
4
|
1
|
2
|
3
|
5
|
2
|
3
|
5
|
6
|
3
|
5
|
8
|
7
|
5
|
8
|
13
|
8
|
8
|
13
|
21
|
9
|
13
|
21
|
34
|
10
|
21
|
34
|
55
|
由此可知,从第一个月开始以后每个月的兔子总數是:
1,1,2,3,5,8,13,21,34,55,89,144,233…
若把上述數列继续写下去,得到的數列便称为斐波那契數列。
數列中每個數便是前兩个數之和,而數列的最初兩個數都是1。
若设 F0=1, F1=1, F2=2, F3=3, F4=5, F5=8, F6=13...
则:当n>1時,Fn+2 = Fn+1 + Fn,而 F0=F1=1。
1,1,2,3,5,8,13,21,34,55,89……F(n)=F(n-1)+F(n-2);
用C#代码实现的话就是:
public static int FindNumber(int n)
{
int result;
if(n==0||n==1)
{
result=1;
}
else
{
result = FindNumber(n - 1) + FindNumber(n - 2);
}
return result;
}
用Js代码实现:
function (n){
if(n<0) return ;
if(n==0||n==1) return 1;
return arguments.callee(n-1)+arguments.callee(n-2);//argumetns.callee:函数体内部对象相当于回调执行函数体本身
}