正の整数Mに対して、次の二つの流れ図に示すアルゴリズムを実行したとき、結果xの値が等しくなるようにしたい。aに入れる条件として、適切なものはどれか。
増分後に判定する後判定ループでは終了条件を1つずらして考える
![二つの流れ図。左の流れ図:開始→x←1→演算(ループ端、制御変数n:初期値M,増分-1,終値1、つまりnをMから1ずつ減らしながらMから1まで繰り返す)→x←(x×n)→演算(ループ端終わり)→終了。注記:ループ端の繰返し指定は、変数名:初期値,増分,終値を示す。 右の流れ図:開始→x←1→n←1→(ループ先頭)→x←(x×n)→n←(n+1)→判定記号[a]→Noならループ先頭に戻る、Yesなら終了、という構造。](/data/ap/figures/ap-2024h-am-5.jpg)
選択肢
- アn<M
- イn>M-1
- ウn>M
- エn>M+1
正解と解説
正解:ウ n>M
左の流れ図はnをMから1まで減らしながらxに掛けるので、結果はMの階乗である。右の流れ図はn=1から順にx←x×nを行い、その後にnを1増やしてから判定するため、nがMのときの乗算を終えた時点でnはM+1になっている。したがって、n>Mが成立したときに終了すれば、ちょうど1×2×…×M=Mの階乗となり両者が一致する。
選択肢ごとの解説
- アn<Mでは最初の判定(n=2のとき、Mが3以上なら真)で終了してしまい、階乗を計算しきれない。
- イn>M-1はn≧Mと同じで、nがMになった時点(Mを掛ける前)で終了するため、Mを掛け損ねる。
- ウ正しい。Mを掛けた直後にn=M+1となるので、n>Mで終了すればMの階乗が得られる。
- エn>M+1ではさらに1回多くループし、余分にM+1を掛けてしまう。
同じ分野の他の問題
- fact(n)は,非負の整数nに対してnの階乗を返す。fact(n)の再帰的な定義はどれか。2025年度 春期 午前 問7
- 0≦x≦1の範囲で単調に増加する連続関数f(x)がf(0)<0≦f(1)を満たすときに,区間内でf(x)=0であるxの値…2025年度 春期 午前 問2
- 整列方法に関するアルゴリズムの記述のうち、バブルソートの記述はどれか。ここで、整列対象は重複のない1から9の数字がランダ…2024年度 春期 午前 問7
- あるデータ列を整列したら状態0から順に状態1、2、・・・・、Nへと推移した。整列に使ったアルゴリズムはどれか。2023年度 秋期 午前 問6
- 配列に格納されたデータ2, 3, 5, 4, 1に対して、クイックソートを用いて昇順に並べ替える。2回目の分割が終わった…2023年度 春期 午前 問7
最終更新:2026-08-25/解説・選択肢ごとの解説は資格暗記が独自に作成しています。問題文と選択肢の出典は上記のとおりです。