递归函数
递归函数:
函数内部直接或者间接的调用自己
+ 自己调用自己(直接或者间接)
+ 要有结束条件(出口)
斐波那契数列
function fbnc(n) {
if(n===1||n===2){
return=1;
}
return fbnc(n-1)+fbnc(n-2);
}
fbnc(5);
有很大的内存缓存问题,其中有很多函数产生的作用域得不到释放,只能计算到很少的值所以需要优化
“`javascript
//1. 当我们想要获取某个数据的时候,优先去缓存里面查找,如果有,就不需要计算,直接返回
//2. 如果缓存里面没有,就需要计算,会把计算的结果存储缓存
//首先在外部声明两个初始化变量用来存储函数中的数据count存储计算多少次,空数组用来把算出的每一个存储下来
var count = 0;
var arr = [];
function fbnc(n){
count++;
if(n===1||n===2){
return 1;
}
//先查询数组中是否存储了这个,如果有直接返回数组不用增加任何
if(arr[n]){
return arr[n];
}else{
var temp = Fbnc(n-1)+Fbnc(n-2);
arr[n] = temp;//通过中间变量把temp的值存储到缓存中
return temp;
}
}