#include <stdio.h>
int factorial(int n) {
if (n == 0) return 1; // 停止条件
return n * factorial(n - 1); // 再帰呼び出し
}
int main() {
int num = 5;
printf("Factorial of %d is %d\n", num, factorial(num));
return 0;
}
解説:
if (n == 0): 停止条件として、nが0になったら再帰を終了します。
return n * factorial(n - 1): 再帰的に階乗を計算します。
2.2 フィボナッチ数列の生成
例:再帰関数を使ったフィボナッチ数列の生成
#include <stdio.h>
int fibonacci(int n) {
if (n <= 1) return n; // 停止条件
return fibonacci(n - 1) + fibonacci(n - 2); // 再帰呼び出し
}
int main() {
int num = 10;
for (int i = 0; i < num; i++) {
printf("%d ", fibonacci(i));
}
printf("\n");
return 0;
}
#include <stdio.h>
// 再帰関数で最大公約数を求める
int gcd(int a, int b) {
if (b == 0) return a; // 停止条件
return gcd(b, a % b); // 再帰呼び出し
}
int main() {
int num1 = 48, num2 = 18;
printf("GCD of %d and %d is %d\n", num1, num2, gcd(num1, num2));
return 0;
}