记忆优化
JavaScript 通过数组或对象将先前操作过的结果记录在对象中,从而避免无谓的重复运算,从而达到优化目的。
构造记忆优化函数
var memoizerFn = function(memoArr, fn){
var _fn = function(n){
var result = memoArr[n];
if(typeof result === 'undefined'){
result = fn(_fn, n);
memoArr[n] = result;
}
return result;
};
return _fn;
};
斐波那契
var fibonacci = memoizerFn ([0, 1], function(fn, n){
return fn(n - 1) + fn(n - 2);
});
fibonacci(6); // 8
阶乘
var factorial = memoizerFn ([1, 1], function(fn, n){
return n * fn(n - 1);
});
factorial(4); // 24
累加
var sum = memoizerFn ([0, 1], function(fn, n){
return n + fn(n - 1);
});
sum(100); // 5050
欢迎访问我的博客 Ama_zhe
--------内容系个人整理(参考JavaScript语言精粹修订版),如有错误,欢迎指出。谢谢!--------