メインコンテンツへ
アルゴリズムとプログラミングアルゴリズムとデータ構造

次の再帰関数 f(n) を f(5) で呼び出したときの戻り値はどれか。 f(n): if n <= 1 then return 1 else return n * f(n - 1)

ア.15
イ.24
ウ.120正解
エ.720

解説

見た目どおり階乗(factorial)です。f(5) = 5! = 120。「自分より1小さい人に投げて、最後は1で受け止める」リレーのイメージ。

なぜ ウ が正解か

f(5) = 5 × f(4) = 5 × 4 × f(3) = 5 × 4 × 3 × f(2) = 5 × 4 × 3 × 2 × f(1) = 5 × 4 × 3 × 2 × 1 = 120。基底ケース f(1)=1 で再帰が止まり、掛け算が逆方向に巻き戻る典型例です。

なぜ ア は間違いか

15 は 5+4+3+2+1 の和。掛け算を足し算と取り違えた典型ミスで、再帰本体の演算子を読み飛ばすとここに着地します。

なぜ イ は間違いか

24 は 4! の値です。基底ケースで f(1)=1 ではなく f(0)=1 と勘違いし、ループを1回多く止めると 5×24=120 ではなく 24 が答えに見えてしまいます。

なぜ エ は間違いか

720 は 6! の値。基底ケースを n≤0 と読んだ場合などに発生する「1段多く回しすぎ」答え。今回は n≤1 で止まるので6まで進みません。

出典: AI生成問題(学習用)