SOURCE

//
//
// 备忘录模式,用一个数组记录已经计算过的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 命令行工具 X clear

                    
>
console