応用情報技術者 2010年 秋期 午前2 問07
問題文
正の整数Mに対して、次の二つの流れ図に示すアルゴリズムを実行したとき、結果xの値が等しくなるようにしたい。aに入れる条件として、適切なものはどれか。

選択肢
ア:n<M
イ:n>M-1
ウ:n>M(正解)
エ:n>M+1
🔒 解説は解答すると表示されます
階乗を求める反復処理【午前2解説】
正解の理由
左側の流れ図は、変数nをMから1まで1ずつ減らしながらxにnを掛けています。一方、右側の流れ図はnを1から始めて1ずつ増やし、条件aでループを終了します。
このとき、右側のループがn > Mとなれば、nがMを超えた時点で終了し、nは1からMまでの値を取ります。これにより、左側と同じ積 が得られます。
したがって、条件aは「n > M」が適切であり、選択肢ウが正解です。
このとき、右側のループがn > Mとなれば、nがMを超えた時点で終了し、nは1からMまでの値を取ります。これにより、左側と同じ積 が得られます。
したがって、条件aは「n > M」が適切であり、選択肢ウが正解です。
解法ステップ
- 左側のループの動作を確認し、nがMから1まで減少していることを理解する。
- 右側のループの初期値と増分を確認し、nが1から増加していることを把握する。
- 両者のループ回数が一致するための終了条件を考える。
- 右側のループがnの値がMを超えたら終了する条件「n > M」が適切と判断する。
- 選択肢の中から「n > M」を選ぶ。
選択肢別の誤答解説
- ア: n < M
→ nがMより小さい間ループを続けると、n = Mのときループが回らず、積の計算が不足します。 - イ: n > M-1
→ n > M-1はn ≥ Mと同義で、n = Mの時点で終了してしまい、ループ回数が不足します。 - ウ: n > M
→ nがMを超えたら終了し、n = 1からMまで正しくループするため正解です。 - エ: n > M+1
→ nがM+1を超えるまでループすると、n = M+1のときもループし、余分な計算が入ります。
よくある誤解
ループの終了条件を「n > M-1」や「n > M+1」と誤解し、ループ回数がずれてしまうことがあります。
また、不等号の向きを逆にしてしまい、無限ループや計算結果の不一致を招くことも多いです。
また、不等号の向きを逆にしてしまい、無限ループや計算結果の不一致を招くことも多いです。
補足コラム
この問題は「ループの境界条件設定」の典型例です。プログラミングやアルゴリズム設計では、ループの開始値・終了条件・増分を正確に設定しないと、計算結果が異なったり無限ループになったりします。
特に「不等号の向き」と「境界値の選定」は注意が必要で、数学的帰納法や数列の範囲指定の感覚が役立ちます。
特に「不等号の向き」と「境界値の選定」は注意が必要で、数学的帰納法や数列の範囲指定の感覚が役立ちます。
FAQ
Q: なぜ「n > M」だとループが正しく終了するのですか?
A: nがMを超えた時点でループを終了するため、nは1からMまでの値を取り、左側のループと同じ回数だけ繰り返します。
A: nがMを超えた時点でループを終了するため、nは1からMまでの値を取り、左側のループと同じ回数だけ繰り返します。
Q: 「n > M-1」と「n > M」はどう違いますか?
A: 「n > M-1」はn ≥ Mと同じ意味で、n = Mの時点でループ終了となり、ループ回数が不足します。
A: 「n > M-1」はn ≥ Mと同じ意味で、n = Mの時点でループ終了となり、ループ回数が不足します。
関連キーワード: ループ条件、境界値設定、アルゴリズム、反復処理、不等号、演算制御

\ せっかくなら /
応用情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

