使用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 //結果