#include <stdio.h>
// 递归计算阶乘
int factorial(int n) {
// 基本情况:0的阶乘为1
if (n == 0) {
return 1;
} else {
// 递归调用,将问题规模减小
return n * factorial(n - 1);
}
}
int main() {
int num = 5;
printf("Factorial of %d is %d\n", num, factorial(num));
return 0;
}
在这个例子中,factorial 函数通过递归调用自身来计算给定数字的阶乘。递归函数通常包含两个部分:
1. 基本情况(Base Case): 一个条件,当满足时,递归不再继续,直接返回一个已知的值。在上述例子中,基本情况是 n == 0,此时阶乘为1。
2. 递归调用: 函数通过调用自身来解决规模较小的子问题。在上述例子中,递归调用是 return n * factorial(n - 1);。
递归通常在问题可以被分解为相似但规模较小的子问题时使用,但需要小心避免无限递归。在编写递归函数时,确保基本情况能够被满足,从而终止递归。
此外,递归可能导致函数调用的嵌套层次较深,可能会消耗大量的堆栈空间。在实际应用中,对递归深度需要谨慎控制,或者考虑使用迭代等替代方法。
转载请注明出处:http://www.zyzy.cn/article/detail/3193/C语言