テクノロジ系
春期
応用情報技術者 2009年 春期 問7
7 / 80
文字列を引数とする関数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
正解と解説
表示する
正解 ア
-1
comp("11","101")は先頭の'1'同士が等しいので残りcomp("1","01")を再帰呼出しします。次は先頭が'1'(コード49)と'0'(コード48)で、first(A)>first(B)なので−1を返します。よって選択肢ア(−1)が正解です。文字列を先頭から比較する大小比較関数になっています。