js 记忆函数
使用js记忆函数来计算菲波那切数列、阶乘等,可以极大减少我们必须要做的工作,加速程序计算。
1.编写记忆函数memoizer
var memoizer = function(memo, fundamental) { //memo记忆数组和fundamental函数 //管理memo存储、何时调用fundamental var shell = function(n) { var result = memo[n]; if(typeof result !== 'number') { result = fundamental(shell, n); memo[n] = result; } return result; }; return shell; };
2.菲波那切数列
//用memoizer定义fibonacci函数 var fibonacci = memoizer([0, 1], function(shell, n) { return shell(n - 1) + shell(n - 2); }); fibonacci(10); > 55 //结果
3.阶乘
//用memoizer定义factorial函数 var factorial = memoizer([1, 1], function(shell, n) { return n * shell(n - 1); }); factorial(10); > 3628800 //结果