题目描述
用 JavaScript 实现斐波那契数列函数,返回第n个斐波那契数。 f(1) = 1, f(2) = 1 等
1.递归
function fibonacci(n) {
if(n==1 || n==2)
return 1;
else{
return fibonacci(n-1)+fibonacci(n-2);}
}
2.非递归
循环:
function fibonacci(n) {
var num1=1;
var num2=1;
for(var i=2;i<n;i++){
num2+=num1;
num1=num2-num1;
}
return num2;
}
利用闭包存储中间结果:
var _fib = (function (n) {
var memory=[0, 1];
return function (n) {
for (var i=memory.length; i<= n; i++) {
memory[i]=memory[i-1]+memory[i-2];
}
return memory.slice(0,n+1);
};
})();
var fibonacci=function (n) {
return _fib(n)[n];
}
console.log(fibonacci(10)); //55