正解は イ
3つの異なる整数x, y, zの中から最大値を返すmaximum関数の空欄条件を問う問題です。関数の構造は「if (□) → return x; elsif (y > z) → return y; else → return z」という3分岐です。xを返す条件として必要なのは「xがy, zの両方より大きい」こと、つまり「x > y かつ x > z」です。これはxが3つの中で最大であるための必要十分条件です。選択肢Bの「x > y and x > z」がこれに対応します。なぜ必要十分条件でなければならないか:条件が不十分だとxより大きい値(y またはz)が存在するのにxを返してしまいます。条件が過剰だとxが最大値のはずなのに第2・第3の分岐に落ちてしまいます。論理的に「x が最大値である」⇔「x > y かつ x > z」というANDの条件が必要です。プログラムのelsiフ分岐(y > z のときy を返す)は、最初のifが偽(xが最大でない)の場合にyとzを比較するため、xが最大でないことが前提となっており、x > y and x > z という条件が正しければ残りの分岐で問題なくy またはzの最大値を返せます。
n個の値の中での最大値判定:「対象が他の全ての値より大きい」という条件がANDで繋がる。3つの場合:x > y AND x > z。条件が不足するとより大きい値があっても見落とし、条件が過剰だと正しい最大値を逃す。