You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 12:39:03