メインコンテンツへスキップ
応用情報技術者2011年度 秋期午前問 7

2011年度 秋期 応用情報技術者 午前 問7

難度標準

n個の正の整数x₁, x₂, …, xₙが並んだ線形リストを[x₁, x₂, …, xₙ]で表し、空リストは[]で表す。次のように再帰的に定義される関数func(L)を、L=[1, 3, 2]を実引数として呼び出したとき、print文によって表示される数字はどれか。ここで、プログラム中の=は等号、:=は代入を表す。

〔関数の定義〕

1. first([x₁, x₂, …, xₙ])はx₁を返す。

2. butfirst([x₁, x₂, …, xₙ])は[x₂, …, xₙ]を返す。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

選択肢

解説

結論 → 詳細 → 補足 の 3 層構成

展開
結論Layer 1

この再帰関数func(L)は、リストLの要素を末尾から順に処理します。

詳細Layer 2
展開

まず、func([1, 3, 2])が呼び出され、次にfunc([3, 2])、func([2])、最後にfunc([])が呼び出されます。func([])は0を返します。次に、最も深い呼び出しであるfunc([2])の実行が再開され、max(2, 0)の結果である2を表示し、2を返します。続いて、func([3, 2])がmax(3, 2)の結果である3を表示し、3を返します。最後に、最初の呼び出しであるfunc([1, 3, 2])がmax(1, 3)の結果である3を表示します。したがって、表示される数字は深い呼び出しから順に2、3、3となり、連結すると233となります。

この解説は?
AI生成

解説は公式の問題文・公式解答を基に作成しています。 事実誤認・選択肢の取り違え・最新法令の反映漏れ等を含む可能性があるため、 重要な判断は必ずリンク先の公式資料でご確認ください。

最終更新:

検証プロセス・誤り報告フローは 運営透明性レポートで公開しています。

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

この問題の理解を「分野全体の力」に広げるための足がかり

何が問われるか
計算量(O 記法)・基本データ構造・典型アルゴリズム(探索・整列)・再帰の挙動を読む力。
学習の進め方
擬似コードを実際にトレースして変数の遷移を表に書き出す習慣を付ける。スタック/キュー/木の図示が定着の鍵。
関連キーワード
計算量二分探索クイックソート再帰スタックキュー木構造
この分野の問題をもっと解く
AI コパイロット

この問題を AI と深掘りする

用語解説・選択肢分析・類題生成をその場で対話。クイズモードでは解答→解説がゼロ遷移。

クイズモードで開く

関連する問題

アルゴリズムとプログラミング の他の問題

他試験区分の同分野問題

応用情報技術者 と共通カリキュラムの他区分で「アルゴリズムとプログラミング」分野を演習する

他年度の「アルゴリズムとプログラミング」問題

応用情報技術者 の同じ分野を年度をまたいで演習する

応用情報技術者 の学習ガイド