必ず受かる情報処理技術者試験

当サイトは、情報処理技術者試験に合格するためのWebサイトです。
ITパスポート試験,基本情報技術者,応用情報技術者,高度試験の過去問題と解答及び詳細な解説を掲載しています。
  1. トップページ
  2. 応用情報技術者
  3. 平成21年度春季問題一覧
  4. 平成21年度春季問題7-解答・解説-分析

平成21年度春季問題

問題7

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

  [関数の定義]
  len(S) 文字列Sの長さを返す。Sが空文字列のときは0を返す。
  first(S) 文字列Sの先頭の1文字のASCIIコードを返す。
Sが空文字列のときはエラーを返す。
  butfirst(S) 文字列Sの先頭の1文字を除いた残りの文字列を返す。
Sが空文字列のときはエラーを返す。
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

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

  [関数の定義]
  len(S) 文字列Sの長さを返す。Sが空文字列のときは0を返す。
  first(S) 文字列Sの先頭の1文字のASCIIコードを返す。
Sが空文字列のときはエラーを返す。
  butfirst(S) 文字列Sの先頭の1文字を除いた残りの文字列を返す。
Sが空文字列のときはエラーを返す。
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

解答:ア

<解説>

下図より、アが正解である。