let data = [1, 2, 3]
let sorted = []
let push = function(i) {
while(i<data.length) {
sorted.push(data[i])
push(i + 1)
}
}
push(0)
大家好,
我正在写一些基本的递归,它似乎没有退出。很抱歉这个基本问题,但我希望有人能解释一下。
预期行为:模仿 for 循环 - 遍历数组并推送到新数组。当我们到达 i == data.length
实际行为:运行 0、1、2,然后运行 2,直到堆栈溢出。
最佳答案
您应该使用 if
而不是 while
,并确保在递归调用中使用不同的 i
值。
let data = [1, 2, 3]
let sorted = []
let push = function(i) {
if (i < data.length) {
sorted.push(data[i]);
push(i + 1);
}
}
push(0);
console.log(sorted);
关于javascript - 为什么我的基本递归无限循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56844694/