我想為從 1 到 10 的所有數字生成 Collat??z 序列,并且所有生成的序列都存盤在名為 innerArr 的陣列中,該陣列應在每次回圈時更改。并且所有這些更改的陣列都將存盤在 externalArr(即陣列陣列)中。但:
1.當 for 回圈中存在 while 回圈時,給定的for回圈不遞增(或遞減)。
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)
uj5u.com熱心網友回復:
問題是,你的 for 回圈試圖n從 1 數到 9,永遠不會運行到最后,因為n在 while 回圈中總是重置為 1。因此,您必須將從 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)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/346639.html
標籤:javascript 数组 循环 序列 考拉茨
