我正在学习一些 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。countArray.push(n),因此它将把 4 压入数组中。return countArray,即 4。n==0,在这种情况下,该函数结束返回一个空数组。我知道这不是它的工作原理,我只是“描述”我的菜鸟思维如何看待这个递归函数。
我查看了练习的解决方案和其他人的解释,但我不明白为什么该函数不像我描述的那样工作,也不明白为什么在到达 后n==0,它开始填充一个从 1 到 5 计数的数组。
我想了解这一点。