javascript - 为什么我的基本递归无限循环?
问题描述
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
not 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 - 为什么“this”关键字在以下 html 代码中不起作用?
- javascript - PHP不会发布值表
- php - 如何解决错误 Column not found: 1054 Unknown column '_token' in 'field list' (SQL: update?
- symfony - Symfony 4 和 Nelmio CORS Bundle 的 CORS 错误
- javascript - 如何根据键对数组进行分组并创建以分组数组为值的动态对象?
- java - 处理获取错误
- javascript - 响应式 Javascript 事件
- c# - ASP.NET Core MVC + 实体框架 + GET + 数组
- html - 如何在另一个网格上添加网格?
- javascript - 如何在不限制“点击”、“悬停”和“选择”事件的情况下创建透明图层?