//第一种递归
function fib1(n){
if(n<2){
return n;
}
return fib1(n-1)+fib1(n-2);
}
//第二种尾递归优化
function fib2(n,ac1=1,ac2=1){
if(n<=1) return ac2;
return fib2(n-1,ac2,ac1+ac2);
}
//第三种
function fib3(n){
var x=0,y=1,sum;
if(n<2){
return n;
}
for(var i=2;i<n;i++){
sum=x+y;
x=y;
y=sum;
}
return sum;
}
//第四种数组
function fib4(n){
var arr=[0,1];
for(var i=2;i<=n;i++){
arr[i]=arr[i-1]+arr[i-2];
}
return arr[n];
}
//第五种闭包
function fib5(n){
var arr=[0,1];
if(n<2) return n;
return (function(n){
if(n>1&&!arr[n]){
arr[n]=arguments.callee(n-1)+arguments.callee(n-2);
}
return arr[n];
})(n)
}
//第六种如何用reduce写斐波那契函数
function fib6(n){
var arr=[0,1];
if(n<2) return n;
var i=2,temp;
while(i<=n){
temp=arr.reduce(function(pre,cur,index,array){
return pre+cur;
});
arr[0]=arr[1];
arr[1]=temp;
i++;
}
return arr[1];
}
console.log(fib5(100));
//第七种解构赋值
function f7(n){
let a=0,b=1,arr=[0,1];
while(arr.length<=n){
[a,b]=[b,a+b];
arr.push(b);
}
return arr[n-1];
}
斐波那契约数
最新推荐文章于 2021-06-04 17:32:40 发布