gpt4 book ai didi

javascript - 为什么这个 JS 函数按升序而不是降序返回数字?

转载 作者:行者123 更新时间:2023-12-02 22:17:04 26 4
gpt4 key购买 nike

我是一名学习编码的学生,通过 freeCodeCamp 练习来学习 JS。我在解释递归的练习之一中遇到了这个函数。从我看来合乎逻辑的是,该函数应该将数字从 1 到 n 按降序排列在数组中,但在执行时,它会按升序排列数字!为什么/怎么会发生这种情况? JS 是否以除自上而下之外的其他方式执行它,还是我在这里遗漏了一些东西?

function countup(n) {
if (n < 1) {
return [];
} else {
const countArray = countup(n - 1);
countArray.push(n);
return countArray;
}
}
console.log(countup(15));

从代码来看,代码似乎是这样做的:将常量 countArray 定义为 countup(n-1),然后将 n 添加为数组中的第一个元素。然后随着 countup 的运行,将 (n-1) 添加 n-1 作为数组中的第二个元素,并且该过程不断重复。但在这种情况下,最终数组中的数字应该是 [n, n-1, n-2, .... , 3, 2, 1] 但实际结果是这个数组: [1,2,3, ...,n-2,n-1,n]。为什么/如何会以与它应该表现的方式相反的方式发生?

最佳答案

您需要考虑递归调用期间会发生什么。也许这会有所帮助:

countup(3)
- calls countup(2)
- calls countup(1)
- calls countup(0) - this returns [] right away
- sets countArray to []
- pushes 1 onto the array <--- first number pushed
- returns [1]
- sets countArray to [1]
- pushes 2 onto the array
- returns [1,2]
- sets countArray to [1,2]
- pushes 3 onto the array
- returns [1,2,3]

正如您所看到的,第一次实际将数字压入数组时是当它减到 1 时,然后堆栈展开添加每个连续的数字。

关于javascript - 为什么这个 JS 函数按升序而不是降序返回数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59357287/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com