使用js记忆函数来计算菲波那切数列、阶乘等,能够极大减小咱们必需要作的工做,加速程序计算。javascript
1.编写记忆函数memoizerjava
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.菲波那切数列shell
//用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 //结果