JS记忆函数
memoizer函数取得的一个初始的memo数组和formula函数。它返回一个管理memo储存和在需要时调用用formula函数的recur函数。我们把这个recur函数和它的参数传递给formula函数:
var memoizer = function (memo, formula) {
var recur = function (n) {
var result = memo[n];
if(typeof result !== "number") {
result = formula(recur, n);
memo[n] = result;
}
return result;
}
return recur;
}
如下例子:
1、斐波那契数列
var fibonacci = memoizer([0, 1], function(recur, n) {
return recur(n - 1) + recur(n - 2);
});
2、阶乘函数
var factorial = memoizer([1, 1], function(recur, n) {
return n * recur(n - 1);
});
版权声明:本文为JohnZhongJob原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
THE END