【Javascript】 whlie文 (ループ) 理解度チェック
この内容のテキストはこちら
問1
while文で10回ループするコードを書いてください。
while文でループ回数を指定することはほぼありませんが、for文とwhile文は互いに書き換える事ができるというのは覚えておきましょう。
let i = 0; while (i < 10) { console.log(i); // 諸々の処理後にインデックスを足す! i++; }
問2
乱数を生成してその値を出力する行為を繰り返してください。ただし、0.3
未満の値が出たら、それを最後としてください。
乱数はMath.random()
で生成できます。
let x = Math.random(); console.log(x); // 0.9108972924486545
0.3
未満ならループ終了というのは、0.3
以上ならループ続行と読み替えることができます。そのため、while文のループ条件はx >= 0.3
のようになります。
普通のwhile文でも良いですが、変数を用意する、かつその変数の初期化の値の都合上、どちらかというとdo-whileの方がきれいに書くことができます。
do-whileの場合
let x = 0; // 何でも良いが、0やnull、初期化なしなどが良い do { x = Math.random(); console.log(x); } while(x >= 0.3);
whileの場合
let x = 1; // 0.3以上の値 while (x >= 0.3) { x = Math.random(); console.log(x); }
問3 コラッツ予想
最初に適当な値を設定して、偶数なら2で割り、奇数なら3倍して1足すという行為繰り返し、1になったら終了してください。
同時に、それを行うたびにその値を出力してください。
例えば、最初が3
の場合、
10 5 16 8 4 2 1
のようになります。
これはコラッツ予想です。この行為を繰り返すと、どんな値を入れても最終的に1になるという予想です。本当にそうかは、まだ証明されていません。
let x = 100; // 適当な値 while(x != 1) { // 偶数 if (x % 2 == 0) { x /= 2; } else { // 奇数 x = x * 3 + 1; } console.log(x); }
問4 無限ループ
無限ループする処理を書いてください。
ループの条件は、条件として入れた式の結果が0かどうかで決まります。つまり、0以外の固定の値を入れると、何度やっても条件をみたすので無限ループにできます。
入れる値は1
かtrue
が一般的です。
while (1) { // ... } // または while (true) { // ... }
