题目:古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
1. 程序分析: 兔子的规律为数列 1,1,2,3,5,8,13,21....
<span style="font-size:14px;"> 菲波那切数列:
n=1 f(1)=1
n=2 f(2)=1
f(n)=f(n-1)+f(n-2)*/
function getFib(n){//获得斐波那契数列中第n个数
/*递归
if(n==1){
return 1;
}else if(n==2){
return 1;
}else{
return getFib(n-1)+getFib(n-2);
//递归: 效率极低
//解决: 用循环代替递归!
}
*/
/*循环*/
var n1=1,n2=1,fn=0;
if(n<3){return 1}
else{
for(var i=3;i<=n;i++){//i从3开始,到<=n结束,i++
fn=n1+n2;
n1=n2;
n2=fn;
/*
n1 n2
f3= 1 + 1;//将n2换到n1位置,将f3给n2
f4=n2 + f3;//将n2中的f3换到n1位置,将f4给n2
f5=f3 + f4;//将n2中的f4换到n1位置,将f5给n2
*/
}
return fn;
}
}
console.log(getFib(100));
</span>