平成22年度 秋期 問69
基礎理論
アルゴリズムに関する問題
二つの変数 x と y に対して,次の手続を (1) から順に実行する。処理が終了したとき,x の値は幾らになるか。
〔手続〕
1. x に 2 を代入し,y に 3 を代入する。
2. y の値から 1 を引いたものを y に代入する。
3. x の値と y の値を加えたものを x に代入する。
4. y ≠ 1 なら手続 (2) に戻り,y = 1 なら処理を終了する。
- ア4
- イ5
- ウ7
- エ8
答えと解説を見る
✓ これが正解イ5
解説
判じるのが足した後なので、最後の一周も足し終えます。
繰り返す手続は、表を作って一行ずつ書くと外れません。初めに二と三を、それぞれの入れ物へ置きます。一周目では、後ろの入れ物から一を引いて二になりました。前の入れ物に足すと、二と二で四になります。後ろがまだ一ではないので、もう一周まわりました。二周目では、後ろから一を引いて一になります。前に足すと、四と一で五になりました。ここで後ろが一なので、そこで終わります。だから五という数を挙げた肢が当たりました。判じるのが足した後に置かれているのが要です。後ろが一になっても、その周の足し算は済んでいました。足さないと読むと、四という数で止まってしまいます。足す手続と引く手続の順を取り違えると、七という数が出ました。表に書けば取り違えません。終わりの条件を読みます。シラバスも、このアルゴリズムの表し方を求めています。
ほかの選択肢はなぜ違うのか
- ア4:四という数を挙げた肢が、こちらのほうです。一周目で止めた形に、ちょうど当たります。ところが後ろの入れ物は、まだ二のままでした。一ではないので、もう一周まわることになります。一周ぶん足りません。止める場所が早いのです。
- ウ7:七という数を挙げた肢が、こちらに当たります。足す手続と引く手続の、順を取り違えた形でした。先に足すと二と三で五になり、その後で後ろが二へ下がります。もう一周で五と二を足して七になり、そこで終わりました。実際は、引いてから足す順に書かれています。
- エ8:八という数を挙げた肢が、こちらに当たります。後ろの入れ物の値を、引く前の三から足し上げた形でした。二へ三と二と一を順に足すと、この数になります。実際に足すのは、一を引いた後の二と一だけでした。引く前の値まで足すと、三だけ大きく出ます。
この問題の用語
- アルゴリズム問題を解くための、決まった手順や考え方そのものです。同じ問題でも手順によって、処理にかかる時間や必要な記憶量が変わります。
出典:平成22年度 秋期 ITパスポート試験 問69(改変:原典の図表をテキストに書き起こした)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)