【发布时间】:2021-01-01 09:40:29
【问题描述】:
我的大脑认为我应该使用 .push() 而不是 .unshift() 但 freeCodeCamp 和我的控制台告诉我这是正确的做法。我只是不明白为什么我的数字使用 .unshift() 从 10 变为 20,使用 .push() 时从 20 变为 10;
我阅读代码的方式:
如果startNum 大于endNum,则返回一个空数组。否则,创建一个名为 arr 的变量,并将每次代码运行时当前的 startNum 增加 1 并将其返回到数组中。
我做错了什么?
function rangeOfNumbers(startNum, endNum) {
if (startNum > endNum) {
return [];
} else {
const arr = rangeOfNumbers(startNum + 1, endNum);
arr.unshift(startNum);
return arr;
}
}
console.log(rangeOfNumbers(10, 20));
控制台:(11) [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
【问题讨论】:
-
以递归方式,最后一个加入栈的调用首先被调用。因此,如果您尝试使用 push 而不是 unshift,您将首先添加最后一个值。
标签: javascript arrays recursion console.log