正答3
解説
正解は3です。
図の左の流れ図は、ループ端でnをMから1まで1ずつ減らしながら x←x×n を繰り返します。
そのため、結果は x=M×(M-1)×…×1=M!(Mの階乗)になります。
右の流れ図は、x←1、n←1から始め、x←x×n と n←n+1 を繰り返し、条件aがYesになったら終了します。
右の結果もM!にするには、x×Mを計算した直後にループを抜ければよいことになります。
【処理の流れ】
1回目のループでは x=1×1、その後 n=2 になります。
2回目では x=1×2、その後 n=3 になります。
k回目のループの最後では x=k! で、n=k+1 になっています。
x=M! になるのはk=Mのときで、そのときnはM+1です。
したがって、n=M+1 で初めてYesとなる条件「n>M」を入れます。
【選択肢別解説】
1:× n<Mでは、Mが3以上のとき1回目の判定で n=2<M がYesとなり、x=1のまま終了してしまいます。
2:× n>M-1では、n=Mになった時点で終了します。
このときxは(M-1)!で、Mを掛ける前に止まってしまいます。
3:○ n>Mなら、x×Mを計算してn=M+1になった時点で終了し、x=M!となって左の流れ図と一致します。
4:× n>M+1では、n=M+2になるまで繰り返すため、さらにM+1を掛けて(M+1)!になってしまいます。
【ポイント】
後判定のループでは、判定の時点でnがすでに1増えていることに注意します。
ループ終了時の変数の値を、具体的な小さいMで確かめると間違いを防げます。