关于递归返回值的一个问题

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 呢?
最近在初学算法,在递归这边有时候总是感觉绕不过来,请大佬帮忙解释详细些,谢谢啦

阅读 1.5k
评论
    6 个回答

    cache数组中的值(从第三项开始)是来自 fibonacciCatch 这个函数的返回值,如果你没有return 函数的默认返回值就是 undefined的

      相似问题
      推荐文章