斐波那契数列及其优化

    let fibonacci = function (n){
        if(n < 1) throw new Error('参数有误')
        if(n === 1 || n === 2) return 1
        return fibonacci(n - 1) + fibonacci(n - 2)
    }

    const memory = function (fn){
        // 利用函数记忆,将之前运算过的结果保存下来,对于频繁依赖之前结果的计算能够节省大量的时间,例如斐波那契数列,
        //缺点就是闭包中的 obj 对象会额外占用内存
        let obj = {}
        return function (n){
            if(obj[n] === undefined) obj[n] = fn(n)
            return obj[n]
        }
    }

    fibonacci = memory(fibonacci)
    console.log(fibonacci(5)) // 5
好记性不如烂笔头,看到自己觉得应该记录的知识点,结合自己的理解进行记录,用于以后回顾。
原文地址:https://www.cnblogs.com/wangxi01/p/11087231.html