アルゴリズムとプログラミング
基本情報技術者試験|次の再帰手続 sumAcc は、引数 acc に途中結果を蓄積しながら 1 から n…
次の再帰手続 sumAcc は、引数 acc に途中結果を蓄積しながら 1 から n までの総和を求める末尾再帰である。sumAcc(4, 0) を呼び出したとき、戻り値はどれか。
○整数型: sumAcc(整数型: n, 整数型: acc)
if (n が 0 と等しい)
return acc
endif
return sumAcc(n - 1, acc + n)ア10
イ24
ウ14
エ15
正解
ア.10
末尾再帰では呼び出し時に acc へ n を加算する。acc は 0→4→7→9→10 と更新され、n=0 で acc=10 を返すため アが正しい。
?選択肢ごとの解説
ア ○末尾再帰では呼び出し時に acc へ n を加算する。acc は 0→4→7→9→10 と更新され、n=0 で acc=10 を返すため アが正しい。
イ ×和ではなく積 4×3×2×1=24(階乗)を求めた、加算を乗算と取り違えた誤りである。
ウ ×最後の n=1 の加算を落とし 0+4+3+2 などの途中値に余りを足した 14 とする加算漏れの誤りである。
エ ×1 から 5 までの和 15 と取り違えた、n の上限を 1 つ多く数えた off-by-one の誤りである。
アルゴリズムとプログラミングの他の問題
次の再帰手続 maxFrom は、配列 arr の添字 i 番目から末尾までの最大値を返す。max(x, y) は x と…単方向連結リストの各ノードはメンバ val と next(次ノードへの参照。なければ NULL)をもつ。次の再帰手続…次の再帰手続 f は n を 3 ずつ減らしながら呼び出される。f(11) を呼び出したとき、同時にスタック上に積まれる…次の擬似言語で表される再帰手続 f を、引数 n = 20 で呼び出したとき、戻り値として返される値はどれか。
```…次の擬似言語は再帰によって b の e 乗を求める手続である。power(2, 10) を実行したとき、戻り値はどれか。…次の擬似言語は、n 枚の円盤を 3 本の杭を使って移す「ハノイの塔」で、1 枚を動かすたびに move を 1…次の擬似言語は再帰でフィボナッチ数を求める手続である(fib(0)=0, fib(1)=1)。fib(10)…次の擬似言語は再帰で配列 arr の先頭 n 要素の合計を求める手続である。arr = {7, 12, 5, 20,…
この問題の「深掘り・誤答の完全解説・覚え方」は、登録すると読めます。
基本情報技術者試験は全4,036問。公開しているのはその一部で、登録すると残りも一問ごとにAI解説つきで解けます。SRS暗記カード・全真模試・弱点診断まで。
登録は1分・クレジットカード不要。無料のまま練習・暗記カード・模試まで使えます。
作成・校閲:ukamiru編集部 · 基本情報技術者試験 過去問 · fe-b-algo-0081
