アルゴリズムとプログラミング
次の再帰関数 f(n) を f(4) として呼び出したとき、返り値はどれか。 ``` function f(n): if n <= 1: return 1 return n * f(n - 1) ```
ア.4
イ.10
ウ.16
エ.24正解
解説
この関数は「ロシアの入れ子人形(マトリョーシカ)」。f(4) を開けると f(3) が入っており、f(3) を開けると f(2)、f(2) には f(1)=1 が入っている。最終的に全部掛け合わせると 4×3×2×1=24 になる。
なぜ エ が正解か
f(4) = 4 × f(3) = 4 × 3 × f(2) = 4 × 3 × 2 × f(1) = 4 × 3 × 2 × 1 = 24。これは 4!(4の階乗)であり、再帰呼び出しが n=1 のベースケースに達するまで展開されて乗算が行われる。
出典: AI生成問題(学習用)
← 前の問題
次の疑似コードを実行した後、変数 a と b の値として正しいものはどれか。 ``` function swap_by_value(x, y): // 値渡し temp = x x = y y = temp function swap_by_ref(ref x, ref y): // 参照渡し temp = x x = y y = temp a = 1 b = 2 swap_by_ref(a, b) // 参照渡しで呼び出す // この時点での a, b は? ```
次の問題 →
要素数 n の配列の先頭(インデックス0)に新しい要素を挿入するとき、既存要素の移動回数として正しいものはどれか。ただし配列のサイズは十分に確保されているものとする。