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

応用情報技術者 2011年 秋期 問7

7 / 80

n個の正の整数x1,x2,…,xnが並んだ線形リストを[x1,x2,…,xn]で表し,空リストは[]で表す。次のように再帰的に定義される関数func(L)を,L=[1,3,2]を実引数として呼び出したとき,print文によって表示される数字はどれか。ここで,プログラム中の=は等号,:=は代入を表す。〔関数の定義〕(1)first([x1,x2,…,xn])はx1を返す。(2)butfirst([x1,x2,…,xn])は[x2,…,xn]を返す。butfirst([x])は[]を返す。(3)max(x,y)は,x≧yであればxを返し,そうでなければyを返す。 func(L) begin if L=[] then return 0; A:=first(L); B:=func(butfirst(L)); C:=max(A,B); print C; return C; end

正解と解説

表示する
正解 エ

233

func(L)はリスト先頭Aと残りを再帰処理した結果Bの最大値Cを表示しながら返します。L=[1,3,2]では、末尾から評価され、func([2])で2、func([3,2])でmax(3,2)=3、func([1,3,2])でmax(1,3)=3が表示され、表示順は2,3,3で「233」となります。

AI に聞く

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