アルゴリズム(全101問中58問目)
No.58解説へ
文字列を引数とする関数 len,first,butfirst を用いて,関数 comp を再帰的に定義した。
comp("11","101")を呼び出したとき,返されるものはどれか。
〔関数の定義〕
comp("11","101")を呼び出したとき,返されるものはどれか。
〔関数の定義〕
- len(S)
- :文字列Sの長さを返す。Sが空文字列のときは0を返す。
- first(S)
- :文字列Sの先頭の1文字のASCIIコードを返す。Sが空文字列のときはエラーを返す。
- butfirst(S)
- :文字列Sの先頭の1文字を除いた残りの文字列を返す。
Sが空文字列のときはエラーを返す。
出典:平成21年春期 問 7
- -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」になります。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
広告