function fibonacciCatch(num) {
let cache = [1, 1];
(function fibonacci(n) {
if(typeof cache[n] == 'number') {
return cache[n]
} else {
// 这里如果没有return为何不行
return cache[n] = fibonacci(n - 1) + fibonacci(n - 2)
}
})(num - 1);
return cache;
}
console.log(fibonacciCatch(4)) //[ 1, 1, 2, 3 ]
如果不写上面注释中的那个return ,那么会生成[1,1,2,NaN]
我的理解是那一句不就是相当于给数组的第n项复制嘛,赋值之后完全是可以再用来进行运算的,为何还要return 呢?
最近在初学算法,在递归这边有时候总是感觉绕不过来,请大佬帮忙解释详细些,谢谢啦
楼主应该说的是里面那一层灭有
return
的情况吧如果里面函数
fibonacci
没有返回值,那么在执行这一句的时候,几回出现两个函数相加的情况,所以就返回
NaN