递归和迭代各有优劣。
递归:内存开销可能大(要等所有函数返回),可读性好
迭代:性能高,可读性差
斐波那契数列
#include <stdio.h>
// 递归方式实现
int Factorial(int n) {
if (n == 0) {
return 1; // f(0) = 1
} else {
return n * Factorial(n - 1); // f(n) = nf(n - 1)
}
}
// 迭代方式实现
int FactorialByIteration(int n) {
int result = 1;
for (int i = n; i > 0; --i) {
result *= i;
}
return result;
}
int main(void) {
printf("3! : %d\n", Factorial(3));
printf("5! : %d\n", Factorial(5));
printf("10! : %d\n", Factorial(10));
printf("10! : %d\n", FactorialByIteration(10));
return 0;
}