//
//
// 备忘录模式,用一个数组记录已经计算过的fib
//
let fibArray = [];
function fib(N) {
if (N == 1 || N == 2) {
return 1
};
fibArray = new Array(N+1)
let fibRet = fib(N - 1) + fib(N - 2);
return fibRet
}
function checkTable (N) {
if(N == 1 || N == 2) fibArray[N] = 1
if(fibArray[N] == 0) {
fibArray[N] = fibArray[N-1] + fibArray[N-2]
}
return fibArray[N]
}
console.log(fib(8));
//
//
// 干掉记录的数组,用两个临时变量计算 fib,空间复杂度1
//
function fib(N) {
if (N == 1 || N == 2) { return 1 };
let current = 1, prev = 1;
for(let i = 3; i <= N; i ++) {
fibRet = current + prev
prev = current;
current = fibRet
}
return current
}
console.log(fib(10));
console