IPA過去問ドリル

平成25年度 秋期 応用情報技術者試験 午前 問8

テクノロジ/アルゴリズム

再帰的に定義された手続procで,proc(5)を実行したとき,印字される数字を順番に並べたものはどれか。 proc(n)  n=0ならば戻る  そうでなければ  {   nを印字する   proc(n-1)を呼び出す   nを印字する  }  を実行して戻る

出典:平成25年度 秋期 応用情報技術者試験 午前 問8

正解:イ

解説

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回印字するなど,終了条件の処理を誤って解釈した場合の結果です。
応用情報技術者の過去問を演習モードで解く