問題
次の擬似言語プログラムを実行したとき、変数resultの値はいくつか。 整数型: result ← 1 整数型: n ← 10 while (n > 1) if (n mod 2 = 0) n ← n / 2 else n ← n × 3 + 1 endif result ← result + 1 endwhile
選択肢
- 1ア 5
- 2イ 7
- 3ウ 10
- 4エ 15
正解
2. イ 7
詳しい解説を見る解説を閉じる
解説
resultは1で初期化され、ループを1回通るたびに1加算される。nの変化を追うと、10は偶数なので10÷2=5、5は奇数なので5×3+1=16、以降は偶数が続き16÷2=8、8÷2=4、4÷2=2、2÷2=1となり、n=1で条件n>1を満たさず終了する。ループは10→5→16→8→4→2→1の変化で計6回実行されるため、result=1+6=7となり、イが正解である。アの5は奇数のときの処理(3倍して1加算)を読み落とした場合などの誤りで、ウやエもトレースの数え間違いによる値である。頻出ポイント:いわゆるコラッツの操作を題材にした問題では、偶数・奇数による分岐と終了条件を正確に追うこと、特にカウンタの初期値が0でなく1である点の見落としに注意する。
一問一答
科目A 180問+科目B 60問