从 1 到 10 的所有数字存储在单独的数组中的 Collat​​z 序列

Collatz Sequence for all numbers from 1 to 10 stored in individual arrays

我想为从 1 到 10 的所有数字生成 Collat​​z 序列,所有生成的序列都存储在一个名为 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)