平成25年度秋期 応用情報技術者試験 午前 問8
再帰的に定義された手続procで、proc(5)を実行したとき、印字される数字を順番に並べたものはどれか。 proc(n) n=0 ならば戻る そうでなければ { nを印字する proc(n-1)を呼び出す nを印字する } を実行して戻る
- ア 543212345
- イ 5432112345
- ウ 54321012345
- エ 543210012345
解答・解説を見る
正解:イ
AI解説
正解はイ。procは、nを印字→proc(n−1)を呼出し→再びnを印字、という構造であり、n=0のときは何も印字せずに戻る。proc(5)では呼出しが深くなる往路で5,4,3,2,1が印字され、n=0で折り返した後、復路で1,2,3,4,5が印字される。よって出力は5432112345となる。 ア: 543212345は復路の1の印字を数え落としている。1はproc(1)の呼出し前後で2回印字される。 イ: 正しい。往路54321、復路12345で計10文字が印字される。 ウ: 54321012345はn=0でも印字すると誤解した値である。proc(0)は即座に戻り何も印字しない。 エ: 543210012345は0を2回印字したと誤解した値である。 💡 再帰のトレースは「呼出し前の処理は往路、呼出し後の処理は復路」と整理する。基底条件(n=0)で何をするか(ここでは印字せず戻る)を必ず確認するのがひっかけ回避のコツ。
出典:平成25年度 秋期 応用情報技術者試験 午前 問8 / 独立行政法人情報処理推進機構(IPA)
※Web掲載用に表記を一部変更しています。著作権はIPAに帰属します。
※Web掲載用に表記を一部変更しています。著作権はIPAに帰属します。