問題
次の擬似言語の関数を power(2, 5) として呼び出したときの戻り値はいくつか。 整数型: power(整数型: base, 整数型: exp) 整数型: result ← 1 整数型: i ← 1 while (i ≦ exp) result ← result × base i ← i + 1 endwhile return result
選択肢
- 1ア 10
- 2イ 16
- 3ウ 32
- 4エ 64
正解
3. ウ 32
詳しい解説を見る解説を閉じる
解説
power(base, exp)は、resultを1で初期化し、ループでbaseをexp回掛け合わせて累乗を求める関数である。power(2, 5)をトレースすると、i=1: result=1×2=2、i=2: result=2×2=4、i=3: result=4×2=8、i=4: result=8×2=16、i=5: result=16×2=32 となり、i=6で条件 i≦5 が偽となって終了する。戻り値は 2^5 = 32 でウが正解である。イの16は2^4でループ回数を1回少なく数えた値、エの64は2^6で1回多く回した値、アの10は累乗を2×5という単なる乗算と誤解した値である。「resultを1で初期化し、baseを掛け続ける」のは累乗計算の定石パターンであり、ループが何回実行されるか(i=1からexpまでのexp回)の数え間違いが最大の失点源である。
一問一答
科目A 180問+科目B 60問