利用缓存计算来提高Fibonacci函数计算速度
window.onload = function(){
var fibonacci = function(){
var memo = [0,1];
var fib = function(n){
var result = memo[n];
if(typeof result != "number"){
result = fib(n-1) + fib(n-2);
memo[n] = result;
}
return result;
}
return fib;
}();
console.time('memo');
console.log(fibonacci(10));
console.timeEnd('memo');
}
通过添加额外参数memo[n] = result来记录中间值,计算时首先通过if(typeof result != "number")检测memo[n]是否存在。这样就提高了计算的效率,同时也要消耗一定了缓存。