用 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;
}