递归和迭代各有优劣。
递归:内存开销可能大(要等所有函数返回),可读性好
迭代:性能高,可读性差

斐波那契数列

image.png

  1. #include <stdio.h>
  2. // 递归方式实现
  3. int Factorial(int n) {
  4. if (n == 0) {
  5. return 1; // f(0) = 1
  6. } else {
  7. return n * Factorial(n - 1); // f(n) = nf(n - 1)
  8. }
  9. }
  10. // 迭代方式实现
  11. int FactorialByIteration(int n) {
  12. int result = 1;
  13. for (int i = n; i > 0; --i) {
  14. result *= i;
  15. }
  16. return result;
  17. }
  18. int main(void) {
  19. printf("3! : %d\n", Factorial(3));
  20. printf("5! : %d\n", Factorial(5));
  21. printf("10! : %d\n", Factorial(10));
  22. printf("10! : %d\n", FactorialByIteration(10));
  23. return 0;
  24. }