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

生成1-10的Collatz Sequence存为二维数组时for循环不递增问题

问题根源

  • 外层for循环的计数变量n和内层Collatz序列计算所用变量为同一个,内层while循环运行结束后会将n的值改写为1,导致外层for循环执行n++后每次都会回到2,永远无法完成1~10的遍历,表现为外层for循环未执行递增操作。
  • 原for循环判断条件为n < 10,如果需要生成1到10所有数字的序列,需要修改为n <= 10。

修复后代码

let outerArr = []; 
for (let n = 1; n <= 10; n++) {
  let innerArr = [];
  // 声明临时变量存储当前待计算的数值,不修改外层循环计数变量n
  let currentNum = n;
  innerArr.push(currentNum);

  while (currentNum !== 1) {
    if (currentNum % 2 == 0) {
      currentNum = currentNum / 2;
    } else {
      currentNum = 3 * currentNum + 1;
    }
    innerArr.push(currentNum);
  }
  outerArr.push(innerArr);
}
console.log(outerArr);

内容的提问来源于stack exchange,提问作者Sahil Kumar Singh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 18:09:00