「自分自身を呼び出す関数」の仕組みを、コールスタックの可視化で理解しましょう。
int factorial(int n) { if (n <= 1) return 1; // ベースケース return n * factorial(n - 1); // 再帰呼び出し }
factorial(4) → 4 × factorial(3) → 4 × 3 × factorial(2) → 4 × 3 × 2 × factorial(1) → 4 × 3 × 2 × 1 = 24
int fib(int n) { if (n <= 0) return 0; if (n == 1) return 1; return fib(n - 1) + fib(n - 2); }
int mystery(int n) { if (n == 0) return 0; return n + mystery(n - 1); } printf("%d\n", mystery(5));
mystery(5) = 5 + mystery(4) = 5 + 4 + 3 + 2 + 1 + 0 = 15。