本文へスキップ
Certia
テクノロジ系
春期

応用情報技術者 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)が正解です。文字列を先頭から比較する大小比較関数になっています。

AI に聞く

AI のボタンを押すと、問題文と解答を入れたプロンプトをコピーしてから各サービスを開きます。入力欄に自動で入らない場合は貼り付けてください。