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

2009年度 春期 応用情報技術者 午前 問7

難度標準

文字列を引数とする関数len、first、butfirstを用いて、関数compを再帰的に定義した。comp("11", "101")を呼び出したとき、返されるものはどれか。

〔関数の定義〕

- len(S):文字列Sの長さを返す。空文字列なら0。

- first(S):先頭の1文字のASCIIコードを返す。空文字列ならエラー。

- butfirst(S):先頭の1文字を除いた残りの文字列を返す。空文字列ならエラー。

comp(A, B)
begin
  if len(A) = 0 and len(B) = 0 then return 0;
  if len(A) = 0 and len(B) ≠ 0 then return 1;
  if len(A) ≠ 0 and len(B) = 0 then return -1;
  if first(A) < first(B) then return 1;
  if first(A) > first(B) then return -1;
  return comp(butfirst(A), butfirst(B));
end

選択肢

解説

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

展開
結論Layer 1

comp("11", "101")では、どちらも空文字列ではなく、先頭文字がともに1なので、それぞれ先頭を除いたcomp("1", "01")を呼び出します。

詳細Layer 2
展開

二度目の呼出しでは先頭文字が1と0になり、文字コードは1の方が大きいため、示された条件分岐に従って−1を返します。最初の呼出しもその値を返すので、正解はアです。この手続は文字を左から順に比較しており、11と101を数値として比較するものではありません。また、先頭で大小が決まった時点で処理が終了するため、後ろの文字まで再帰を続けたり、文字列の長さだけで結果を決めたりしません。

この解説は?
AI生成

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

最終更新:

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

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

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

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

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

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

クイズモードで開く

関連する問題

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

他試験区分の同分野問題

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

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

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

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