平成25年度 秋期 応用情報技術者試験 午前 問8
テクノロジ/アルゴリズム再帰的に定義された手続procで,proc(5)を実行したとき,印字される数字を順番に並べたものはどれか。 proc(n) n=0ならば戻る そうでなければ { nを印字する proc(n-1)を呼び出す nを印字する } を実行して戻る
出典:平成25年度 秋期 応用情報技術者試験 午前 問8
- ア543212345
- イ5432112345
- ウ54321012345
- エ543210012345
正解:イ
解説
proc(n)はn=0でない限り,まずnを印字し,proc(n-1)を再帰呼出しした後に再びnを印字します。proc(5)を実行すると,5→4→3→2→1(ここでproc(0)は何もしない)→1→2→3→4→5の順に印字され,5432112345となります。
選択肢ごとの解説
- ア誤り。543212345はproc(0)でも0を印字してしまった場合に近い誤りですが,実際にはn=0では何も印字せず戻るため1が連続して現れます。
- イ正しい。各nについて呼出し前後で2回ずつ印字され,5,4,3,2,1,1,2,3,4,5の順になります。
- ウ誤り。54321012345はn=0のときにも0を印字してしまった場合の誤った結果です。
- エ誤り。543210012345は0を2回印字するなど,終了条件の処理を誤って解釈した場合の結果です。