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
斐波那契数列及其优化
好记性不如烂笔头,看到自己觉得应该记录的知识点,结合自己的理解进行记录,用于以后回顾。