問題
次の擬似言語プログラムの実行結果として変数countの値はいくつか。 整数型: n ← 64 整数型: count ← 0 while (n > 1) n ← n / 2 count ← count + 1 endwhile
選択肢
- 1ア 4
- 2イ 5
- 3ウ 6
- 4エ 7
正解
3. ウ 6
詳しい解説を見る解説を閉じる
解説
このプログラムは、nが1より大きい間nを2で割り続け、その回数をcountに数える処理であり、64が1になるまでの除算回数を求めている。トレースすると64→32→16→8→4→2→1と変化し、矢印の数すなわち除算は6回であるからcount=6となり、ウが正解である。これは2の何乗が64かという計算(2の6乗=64、log2 64=6)と同じである。アの4やイの5は途中のn=4やn=2で終了したと誤読した値、エの7はn=1になった後にもう1回数えてしまった誤りである。頻出ポイント:データを繰り返し半分にする操作の回数はおよそlog2 nで見積もれるという感覚が重要で、二分探索の最大比較回数の計算(要素数nに対しおよそlog2 n回)に直結する頻出知識である。
一問一答
科目A 180問+科目B 60問