修了試験 2022-01-23実施分 基本情報技術者試験 問9
再帰的に定義された手続procで,proc(5)を実行したとき,印字される数字を順番に並べたものはどれか。 proc(n) n=0 ならば戻る そうでなければ { nを印字する proc(n-1)を呼び出す nを印字する } を実行して戻る
正答2
解説
正解は2です。 proc(n)は、nを印字してからproc(n-1)を呼び出し、戻ってきた後にもう一度nを印字します。 n=0のときは何も印字せずに戻ります。 再帰呼出しの行きと帰りで、それぞれ数字が印字されます。 【計算】 proc(5)は5を印字し、proc(4)を呼び出します。 同じようにproc(4)、proc(3)、proc(2)、proc(1)がそれぞれ4、3、2、1を印字します。 ここまでの印字は54321です。 proc(1)が呼び出したproc(0)は、何も印字せずに戻ります。 proc(1)は戻った後に1を印字し、終了します。 続いてproc(2)、proc(3)、proc(4)、proc(5)が順に2、3、4、5を印字します。 全体の印字は5432112345です。 【選択肢別解説】 1:× 543212345では、1が1回しか印字されていません。 proc(1)も行きと帰りで1を2回印字します。 2:○ 行きで54321、帰りで12345が印字されるので、5432112345になります。 3:× 54321012345には0が含まれています。 n=0のときは印字せずに戻るので誤りです。 4:× 543210012345には0が2回含まれています。 proc(0)は何も印字しないので誤りです。 【ポイント】 再帰呼出しの前後に処理がある場合は、行きの順と帰りの逆順の両方で処理が行われます。 終了条件で何をするか(ここでは何も印字しない)を必ず確認します。まとめて解く
修了試験 2022-01-23実施分を通しで解く(80問)→