您的位置:首页 > 其它

如何解决斐波那契数列递归方法的性能问题

2017-08-07 18:47 330 查看
#

解决斐波那契数列的性能问题

//定义一个缓存数组,存储已经计算出来的斐波那契数

1.计算的步骤

1.先从cache数组中去取想要获取的数字

2.如果获取到了,就直接使用

3.如果没有获取到,就去计算,计算完之后,把计算结果存入cache,然后将结果返回

具体操作:

var cache = [];
function fib(n){
//1.从cache中获取数据
if(cache
!== undefined){
//如果缓存中有,直接返回
return cache
;
}
//如果缓存中没有,那么就计算,并把计算结果存入数组
if(n <= 2){
cache
= 1;
return 1;
}
var temp = fib(n - 1) + fib(n - 2);
cache
= temp;
return temp;
}


//创建一个闭包来封存这个函数

var count =0 ; //设置count来计算运算次数
function createFib(){
var cache = [];
function fib(n){
count ++;
//1.从cache中获取数据
if(cache
!== undefined){
//如果缓存中有 直接返回
return cache
;
}
//如果缓存中没有 就计算
if(n <= 2){
//把计算结果存入数组
cache
= 1;
return 1;
}
var temp = fib(n - 1) + fib(n - 2);
//把计算结果存入数组
cache
= temp;
return temp;
}
return fib;
}
//测试性能:
var fib = createFib();
fib(5);
console.log(count); //7
count = 0;
fib(6);
console.log(count); //3
count = 0;
fib(20);
console.log(count); //29
count = 0;
fib(21);
console.log(count); //3
count = 0;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐