//
// main.c
// 01递归理解:通过求阶乘(factorial)和斐波那契数列(fibonacci sequence)理解递归
//
// Created by steve xiaohu zhao on 2025/2/7.
//
#include <stdio.h>
// 1. 求阶乘
int factorial(int n) {
if (n == 0)
return 1;
return n * factorial(n - 1);
}
/*
理解:
factorial(5) = 5 * factorial(4)
factorial(4) = 4 * factorial(3)
factorial(3) = 3 * factorial(2)
factorial(2) = 2 * factorial(1)
factorial(1) = 1 * factorial(0)
factorial(0) = 1
依次反向带入即可计算出最终结果
*/
// 2. 求斐波那契数列:计算第 n 个fibonacci 数列的数字是多少?
int fibonacci(int n) {
if (n == 1 || n == 2) {
return 1;
}
return fibonacci(n - 2) + fibonacci(n - 1);
}
/*
理解:
fibonacci(6) = fibonacci(5) + fibonacci(4)
fibonacci(5) = fibonacci(4) + fibonacci(3)
fibonacci(4) = fibonacci(3) + fibonacci(2)
fibonacci(3) = fibonacci(2) + fibonacci(1)
fibonacci(2) = 1
fibonacci(1) = 1
*/
int main(int argc, const char *argv[]) {
// // 1. 计算阶乘
// for (int i = 0; i < 10; i++) {
// printf("%d 的阶乘是:%d\n", i, factorial(i));
// }
// 2.求斐波那契数列
for (int i = 1; i < 30; i++) {
printf("%d ", fibonacci(i));
}
printf("\n");
return 0;
}