生成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
相关产品推荐
相关产品推荐

