基本情報Bでのプログラミング問題において、二重ループを使ったコードで、iとjの数字が同じにならない理由について疑問を持っている方も多いと思います。この記事では、この現象の理由と、二重ループの動作について詳しく解説します。
二重ループとは
まず、二重ループについて簡単におさらいします。二重ループとは、ループの中にさらに別のループを配置する方法です。例えば、以下のようなコードが考えられます。
for (i = 1; i <= array.length; i++) for (j = i; j <= array.length; j++) endfor endfor
このコードでは、外側のループでiが1からarrayの要素数まで繰り返し、内側のループでjがiからarrayの要素数まで繰り返されます。
iとjの数字が異なる理由
質問者が「iとjの数字はずっと同じになると思っていた」と感じたのは、二重ループの動作の理解に少し誤解があったためです。
内側のループ(j)は、外側のループ(i)が進むたびに、新たに初期化されます。具体的には、iが1のとき、内側のループのjは1から始まり、iが2になると、内側のjは2から始まります。このように、iの値に応じてjの開始位置が変わるため、iとjは必ずしも同じ数字になるわけではありません。
具体例で見る二重ループの動作
例えば、arrayの要素数が5の場合、以下のようにループが実行されます。
- i=1のとき、jは1から5まで繰り返し(1, 2, 3, 4, 5)
- i=2のとき、jは2から5まで繰り返し(2, 3, 4, 5)
- i=3のとき、jは3から5まで繰り返し(3, 4, 5)
- i=4のとき、jは4から5まで繰り返し(4, 5)
- i=5のとき、jは5から5まで繰り返し(5)
このように、iが進むごとに、内側のjはそのiの値から始まり、ループの回数が減少します。そのため、iとjは常に一致するわけではありません。
二重ループの理解を深めるためのポイント
二重ループの理解を深めるために、以下の点を押さえておくとよいでしょう。
- 外側のループ(i)の値に依存して、内側のループ(j)の開始値が決まる。
- 内側のループは、外側のループが1回進むごとに、最初から最後まで繰り返される。
- iとjはそれぞれ別々にカウントされるため、同じ値になることはない場合が多い。
これらを理解することで、二重ループの挙動がより明確に分かるようになるでしょう。
まとめ
基本情報Bでの二重ループにおいて、iとjの数字が同じにならない理由は、内側のループ(j)が外側のループ(i)の進行に応じて初期化され、開始値が変わるためです。iとjは独立して動作するため、必ずしも同じ数字にはなりません。二重ループの動作を正しく理解することで、より効率的なプログラミングが可能になります。

コメント