构造带记忆功能的函数 发表于 2017-03-04 构造一个带有之前结果缓存的函数,减少不必要的计算12345678910111213141516/*传入 初始缓存记忆的数组memo 和计算公式formula返回 一个管理memo存储和在需要时调用formula的函数recur*/var memoizer = function(memo,formula) { var recur=function(n) { var result=memo[n]; if (typeof result !=='function') { result=formula(recur,n); memo[n]=result; } return result; }; return recur;} 用我们的memoizer函数定义fibonacci函数123var fibonacci=memoizer([0,1],function(recur,n) { return recur(n-1)+recur(n-2);}) 用我们的memoizer函数定义阶乘函数123var fibonacci=memoizer([1,1],function(recur,n) { return n*recur(n-1);})