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

次の再帰関数 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! の値です。最後に n=5 を掛けるステップを忘れ、f(5) の代わりに f(4) 相当をそのまま返してしまうと 24 になります。

なぜ エ は間違いか

720 は 6! の値です。f(5) ではなく f(6) を計算してしまった、あるいは掛け算の始点を1つ多く取ってしまった場合の値です。

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

この分野の解説記事

科目Bの歩き方 — 擬似言語は「3つの型」で読む