問題
次の擬似言語プログラムで、n=5のとき関数sumN(n)の戻り値はいくつか。 整数型: sumN(整数型: n) if (n = 0) return 0 endif return n + sumN(n - 1)
選択肢
- 1ア 5
- 2イ 10
- 3ウ 15
- 4エ 25
正解
3. ウ 15
詳しい解説を見る解説を閉じる
解説
正解はウ。sumNは自分自身を呼び出す再帰関数で、nから0までの整数を足し合わせる。呼出しを展開すると、sumN(5)=5+sumN(4)=5+4+sumN(3)=5+4+3+sumN(2)=5+4+3+2+sumN(1)=5+4+3+2+1+sumN(0)となり、n=0のとき再帰せず0を返す(基底条件)。よって5+4+3+2+1+0=15である。アの5は初回の加算分のみ、イの10はsumN(4)の結果、エの25は5×5と混同した誤りである。基本情報の科目Bでは再帰関数が頻出であり、①再帰を停止させる基底条件の確認、②呼出しの展開、③戻り値の合成、という3ステップで追跡するのが定石である。1からnまでの和の公式n(n+1)/2=5×6÷2=15と一致することでも検算できる。
一問一答
科目A 180問+科目B 60問