JS传入参数3要生成[0,1,2]数组输出错误,如何调整得到正确结果
问题排查
你的代码存在两个明显问题:
- 打印时机错误:
console.log(array)写在increment(3)执行前,此时递归逻辑还没运行,打印出来的只有初始值[0] - 数值推入逻辑不符合预期:传入参数3时,递归执行完成后会把3也推入数组,最终数组结果为
[0, 1, 2, 3],和你需要的[0, 1, 2]不符
修复方案
方案1:调整调用参数和打印位置
仅修改调用和打印位置,不改动原有递归逻辑,适配你的需求:
const array = [0]; const increment = (num) => { if (num > 0) { increment(num - 1); array.push(num); } return; }; increment(2); // 传入参数改为2,保证最大推入值为2 console.log(array); // 打印放在递归执行后
运行后输出结果为 [0, 1, 2],符合要求。
方案2:直接生成指定长度的序列(非递归实现,更简洁)
如果不需要强制用递归实现,用内置方法更高效:
const generateArray = (length) => Array.from({length}, (_, index) => index); console.log(generateArray(3)); // 输出[0, 1, 2]
内容的提问来源于stack exchange,提问作者Super Hero Gang SHG
相关产品推荐
相关产品推荐

