アルゴリズムとプログラミング(全23問中8問目)

関数 calcX と関数 calcY は,引数 inData を用いて計算を行い,その結果を戻り値とする。関数 calcX を calcX(1) として呼び出すと,関数 calcX の変数 num の値が,1→3→7→13と変化し,戻り値は13となった。関数 calcY を calcY(1) として呼び出すと,関数 calcY の変数 num の値が,1→5→13→25と変化し,戻り値は25となった。プログラム中のa,bに入れる字句の適切な組合せはどれか。
96.png

出典:令和4年春期 問96

96a.png
正解 問題へ
分野:テクノロジ系
中分類:アルゴリズムとプログラミング
小分類:アルゴリズムとプログラミング
解説
空欄aに当てはまる字句から考えていきます。
選択肢は2×num+inum+2×iの2つですが、変数 i が1→2→3と増えたとき、変数 num の値がどう変わるかをトレースしていくと以下のようになります。

[2×num+i]
i=1のとき、2×1+1=3 → num
i=2のとき、2×3+2=8 → num
i=3のとき、2×8+3=19 → num

[num+2×i]
i=1のとき、1+2×1=3 → num
i=2のとき、3+2×2=7 → num
i=3のとき、7+2×3=13 → num

したがって、変数 num の値が1→3→7→13となるnum+2×iの式が適切であることがわかります。
※増加量はi=1のとき2、i=2のとき4、i=3のとき6なので、変数 num に 2×i を加算していくと考えることもできます。

次に空欄bについて考えます。
選択肢はiを1から7まで3ずつ増やすiを2から6まで2ずつ増やすの2つですが、〔プログラム2〕のaにnum+2×iを入れてみると、それぞれ次のような処理の流れになります。

[iを1から7まで3ずつ増やす]
i=1のとき、1+2×1=3 → num
i=4のとき、3+2×4=11 → num
i=7のとき、11+2×7=25 → num

[iを2から6まで2ずつ増やす]
i=2のとき、1+2×2=5 → num
i=4のとき、5+2×4=13 → num
i=6のとき、13+2×6=25 → num

したがって、変数 num の値が1→5→13→25となるiを2から6まで2ずつ増やすの繰返し条件が適切であることがわかります。

以上より、適切な組合せは「エ」となります。

Pagetop