解答
イ
解説
‘return x’ が実行されるのは「x が最大」のときでなければなりません。x が最大であるための条件は,x が y よりも z よりも大きいこと,すなわち ‘x > y and x > z’(イ)です。
各選択肢が不適切な理由を,具体的な反例で確認します(三つの値は異なる前提)。
- ア ‘x > y’
- (x, y, z)=(2, 1, 3) のとき条件は真になり x=2 を返しますが,最大値は z=3 です。z との比較が欠けています。
- ウ ‘x > y and y > z’
- x > y > z(xが最大)のときしか真になりません。(3, 1, 2) のように x が最大でも y < z だと偽になり,elseif の y > z も偽なので z=2 を返してしまい誤りです。
- エ ‘x > z’
- (2, 3, 1) のとき真になり x=2 を返しますが,最大値は y=3 です。y との比較が欠けています。
- オ ‘x > z and z > y’
- x > z > y の並びのときしか真になりません。例えば (x, y, z)=(3, 2, 1) は x が最大ですが,z > y(1 > 2)が偽なので条件全体が偽となり,elseif の y > z(2 > 1)が真で y=2 を返してしまい誤りです。
- カ ‘z > y’
- x の大小と無関係な条件であり,明らかに誤りです。
なお,空欄が偽だった場合の ‘elseif (y > z)’ は「x は最大でない」ことが確定した状態で評価されるため,y と z の比較だけで残り二つの大小を判定できる,という構造になっています。