応用情報技術者平成21年春期 午前問7

問7

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

〔関数の定義〕
len(S)
:文字列Sの長さを返す。Sが空文字列のときは0を返す。
first(S)
:文字列Sの先頭の1文字のASCIIコードを返す。Sが空文字列のときはエラーを返す。
butfirst(S)
:文字列Sの先頭の1文字を除いた残りの文字列を返す。
 Sが空文字列のときはエラーを返す。
07.png/image-size:330×217
  • -1
  • 0
  • 1
  • エラー

分類

テクノロジ系 » アルゴリズムとプログラミング » アルゴリズム

正解

解説

プログラムをトレースしていくと次のようになります。
[comp("11","101")]
begin
len(11)=2,len(101)=3なので、次の処理へ移る。
first(11)=1,first(101)=1
first(11)=first(101)なので、comp("1", "01")を呼び出す。

 [comp("1","01")]
 begin
 len(1)=1,len(01)=2なので、次の処理へ移る。
 first(1)=1,first(01)=0
 first(1)>first(01)なので、-1を返す。
 end

comp(1,01)から返却された-1を返す。
end
したがってcomp("11","101")の結果は「-1」になります。
© 2010-2024 応用情報技術者試験ドットコム All Rights Reserved.

Pagetop