从 1 到 10 的所有数字存储在单独的数组中的 Collatz 序列
Collatz Sequence for all numbers from 1 to 10 stored in individual arrays
我想为从 1 到 10 的所有数字生成 Collatz 序列,所有生成的序列都存储在一个名为 innerArr 的数组中,该数组应该在每次循环时改变。所有这些更改的数组都将存储在 outerArr(即数组数组)中。但是:
1. 给定 for 当此 for 中存在 while 循环时循环不递增(或递减)循环.
2. 给定 while 循环仅在没有 for 循环覆盖且 n = (任何数字)。
let n,outerArr = [];
for (n = 1; n < 10; n++) {
let innerArr = [], i = 0;
innerArr.push(n);
while (n !== 1) {
if (n % 2 == 0) {
n = n / 2;
innerArr.push(n);
} else {
n = (3 * n) + 1;
innerArr.push(n);
}
i++;
}
outerArr.push(innerArr);
}
console.log(outerArr)
问题是,你的 for 循环试图从 1 到 9 计数 n
,但永远不会 运行 结束,因为 n
总是重置为 1在 while 循环中。所以必须把从1到9计数的变量和while循环中修改的变量分开。
此外,如果你真的想覆盖问题中所说的从1到10的数字,请记住使用<= 10
。
let n,outerArr = [];
for (m = 1; m <= 10; m++) {
let n = m;
let innerArr = [], i = 0;
innerArr.push(n);
while (n !== 1) {
if (n % 2 == 0) {
n = n / 2;
innerArr.push(n);
} else {
n = (3 * n) + 1;
innerArr.push(n);
}
i++;
}
outerArr.push(innerArr);
}
console.log(outerArr)
我想为从 1 到 10 的所有数字生成 Collatz 序列,所有生成的序列都存储在一个名为 innerArr 的数组中,该数组应该在每次循环时改变。所有这些更改的数组都将存储在 outerArr(即数组数组)中。但是:
1. 给定 for 当此 for 中存在 while 循环时循环不递增(或递减)循环.
2. 给定 while 循环仅在没有 for 循环覆盖且 n = (任何数字)。
let n,outerArr = [];
for (n = 1; n < 10; n++) {
let innerArr = [], i = 0;
innerArr.push(n);
while (n !== 1) {
if (n % 2 == 0) {
n = n / 2;
innerArr.push(n);
} else {
n = (3 * n) + 1;
innerArr.push(n);
}
i++;
}
outerArr.push(innerArr);
}
console.log(outerArr)
问题是,你的 for 循环试图从 1 到 9 计数 n
,但永远不会 运行 结束,因为 n
总是重置为 1在 while 循环中。所以必须把从1到9计数的变量和while循环中修改的变量分开。
此外,如果你真的想覆盖问题中所说的从1到10的数字,请记住使用<= 10
。
let n,outerArr = [];
for (m = 1; m <= 10; m++) {
let n = m;
let innerArr = [], i = 0;
innerArr.push(n);
while (n !== 1) {
if (n % 2 == 0) {
n = n / 2;
innerArr.push(n);
} else {
n = (3 * n) + 1;
innerArr.push(n);
}
i++;
}
outerArr.push(innerArr);
}
console.log(outerArr)