1)不用递归的斐波那契数列代码
function feibo(n){
var feibona=[];
var i=0;
while(i<n){
if(i<=1){
feibona.push(1)
}else{
feibona.push(feibona[i-1]+feibona[i-2])
}
i++;
}
// feibona.shift()//去掉第一个0
return feibona
}
console.log(feibo(10));// [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
2)尾调用优化:
function Fibonacci(n,ac1=1,ac2=1){
if(n<=1){
return ac2;
}else{
return Fibonacci(n-1,ac2,ac1+ac2);
}
}
尾调调用斐波那契数代码改进
function feibonaqie(n,ac1=1,ac2=1){
return n<2?ac2:feibonaqie(n-1,ac2,ac1+ac2);
}
console.log(feibonaqie(1000));//可以输入数字大概到1000
3)获得指定的第几个斐波那契数
function Fibonacci(n){
if(n<=1){
return 1;
}else{
return Fibonacci(n-1)+ Fibonacci(n-2);
}
}
4)代码改进:
function feibonaqie(n){
return n<2?n:feibonaqie(n-1)+feibonaqie(n-2)
}
console.log(feibonaqie(40));//能达到40左右