用 JavaScript 实现斐波那契数列函数,返回第n个斐波那契数。 f(1) = 1, f(2) = 1 等
function memorizedFibonacci() { const mem = [0,1,1]; // n对应的结果缓存 return function fibonacci(n) { if (mem[n] !== undefined) return mem[n]; return mem[n] = fibonacci(n-1) + fibonacci(n-2); } } var fibonacci = memorizedFibonacci();
//解法一 function fibonacci(n) { let first = 1, second = 1, tmp = 0, res = [1, 1]; for (let i = 2; i <= n - 1; i++) { tmp = first + second; first = second; second = tmp; res[i] = second; } console.log(res) return res[n - 1]; } //解法二 function fibonacci(n) { if (n === 1 || n === 2) { return 1; } return fibonacci(n - 1) + fibonacci(n - 2); }
function fibonacci(n) {var first=1;
var firstNext=1;
var number=1;
for(var i=2;i<n;i++){
number=(first+firstNext);
first=firstNext;
firstNext=number;
}
return number;
}
//动态规划解决,效率比递归好多了
function fibonacci(n) { //一、递归解法 //return n<=2?1:fibonacci(n-1)+fibonacci(n-2); //二、循环解法 var num1=1; var num2=1; for(var i=2;i<n;i++){ num2+=num1; num1=num2-num1; } return num2; }