前言
在计算机领域,记忆(memoization)是主要用于加速程序计算的一种优化技术,它使得函数避免重复演算之前已被处理过的输入,而返回已缓存的结果。 -- wikipedia
Memoization
的原理就是把函数的每次执行结果都放入一个对象中,在接下来的执行中,在对象中查找是否已经有相应执行过的值,如果有,直接返回该值,没有才真正执行函数体的求值部分。在对象里找值是要比执行函数的速度要快的。
另外,Memoization
只适用于确定性算法,对于相同的输入总是生成相同的输出,即纯函数。
一、简单实现
通过 Memoization 的定义和原理,我们就可以初步实现 Memoization 了。
let memoize = function(func) {let cache = {};return function(key) {if (!cache[key])cache[key] = func.apply(this, arguments);return cache[key];}}
是不是很