小编Mog*_*shu的帖子

倒计时函数中的递归如何工作

我正在学习一些 JavaScript,但我很难理解 FreeCodeCamp 上有关递归倒计时的课程(链接)。

在课程中,有这个最初的例子。但我对它的运作方式感到困惑:

function countup(n) {
  if (n < 1) {
    return [];
  } else {
    const countArray = countup(n - 1);
    countArray.push(n);
    return countArray;
  }
}
console.log(countup(5));
Run Code Online (Sandbox Code Playgroud)

我看到这个函数执行的步骤(按顺序),如下所示:

  • n(开头是5)大于1,所以转到语句else
  • else语句中,我将countArray分配一个常量 () 给 do countup(n - 1),即 4。
  • js 遇到的下一个操作是countArray.push(n),因此它将把 4 压入数组中。
  • 然后它遇到return countArray,即 4。
  • 该函数继续 3,2,1 直到基本条件达到n==0,在这种情况下,该函数结束返回一个空数组。

我知道这不是它的工作原理,我只是“描述”我的菜鸟思维如何看待这个递归函数。

我查看了练习的解决方案和其他人的解释,但我不明白为什么该函数不像我描述的那样工作,也不明白为什么在到达 后n==0,它开始填充一个从 1 到 5 计数的数组。

我想了解这一点。

javascript recursion countdown

1
推荐指数
1
解决办法
291
查看次数

标签 统计

countdown ×1

javascript ×1

recursion ×1