テクノロジ系
秋期
応用情報技術者 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」となります。