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

分野:アルゴリズムとプログラミング(データ構造・アルゴリズム・探索整列・計算量の実際・擬似言語・プログラム言語・データ記述言語)|実際に出題されたIPA過去問題

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

  1.  543212345
  2.  5432112345
  3.  54321012345
  4.  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に帰属します。
📱 演習アプリで解く(無料・登録不要・2,640問収録)

「アルゴリズムとプログラミング」分野の攻略ポイント

データ構造・アルゴリズム・探索と整列・計算量・擬似言語・プログラム言語・データ記述言語が対象です。擬似言語のトレースは時間はかかるものの、落ち着いて表を書けば必ず正解にたどり着く「確実に取れる」問題です。

アルゴリズムとプログラミングの攻略ポイントをすべて見る(要点6項目・ひっかけ3項目)→

同じ分野(アルゴリズムとプログラミング(データ構造・アルゴリズム・探索整列・計算量の実際・擬似言語・プログラム言語・データ記述言語))の過去問