応用情報に戻る
再帰難易度: 標準2011年度

応用情報技術者 過去問再帰 2011年度 第7問

問題

n 個の正の整数 x1, x2, …, xn が並んだ線形リストを [x1, x2, …, xn] で表し,空リストは [ ] で表す。次のように再帰的に定義される関数 func(L) を,L=[ 1, 3, 2 ] を実引数として呼び出したとき,print 文によって表示される数字はどれか。ここで,プログラム中の=は等号,:=は代入を表す。 〔関数の定義〕 (1) first([x1, x2, …, xn]) は x1 を返す。 (2) butfirst([x1, x2, …, xn]) は [x2, …, xn] を返す。butfirst([x]) は [ ] を返す。 (3) max(x, y) は,x≧y であれば x を返し,そうでなければ y を返す。 func(L) begin if L=[ ] then return 0; A := first(L); B := func(butfirst(L)); C := max(A, B); print C; return C; end

選択肢

  1. 1123
  2. 2133
  3. 3223
  4. 4233

正解

4. 233

詳しい解説を見る

解説

func([1,3,2]) は内部で func([3,2])→func([2])→func([ ]) と再帰し、最も深い呼び出しから print が実行される。func([2]) では A=2,B=0,C=max(2,0)=2 で 2 を表示し 2 を返す。func([3,2]) では A=3,B=2,C=max(3,2)=3 で 3 を表示し 3 を返す。func([1,3,2]) では A=1,B=3,C=max(1,3)=3 で 3 を表示する。表示順は 2、3、3 で、つなげると 233 となる。よってエが正解。(出典: 平成23年度 秋期 応用情報技術者試験 午前 問7)

一問一答

全400問を繰り返し学習

同じ年度の過去問

この調子で演習を続けよう

スキマ資格では応用情報の全3360問を分野別・難易度別に体系的に学習できます。応用情報技術者試験(AP)は IPA が実施する情報処理技術者試験のレベル3。2026年度からCBT方式へ移行し、科目A(四肢択一80問)・科目B(記述11問中5問選択)の2部構成で、それぞれ基準点以上が必要です。テクノロジ・マネジメント・ストラテジの全分野から出題されます。