这个函数通过递归的方式计算阶乘
2025-05-16
这个函数通过递归的方式计算阶乘。递归是一种函数调用自身的技术。下面是对这个函数如何工作的详细解释:
阶乘的定义
阶乘是一个数学概念,表示从 1 到该整数 n 的所有正整数的乘积。阶乘用符号 n! 表示,其定义为:
0!=1
1!=1
递归实现
在这个函数中,我们使用递归来计算阶乘。递归的基本思想是将问题分解为更小的子问题,直到达到一个基本情况(base case),然后从基本情况开始逐步解决更大的问题。
函数代码
c
long factorial(int n) {
if (n == 0 || n == 1) {
return 1; // 基本情况
} else {
return n * factorial(n - 1); // 递归调用
}
}
解释
基本情况:
当 n 为 0 或 1 时,函数直接返回 1。这是因为 0!=1 和 1!=1。
这是递归的终止条件,防止无限递归。
递归调用:
如果 n 大于 1,函数调用自身,计算 factorial(n - 1),然后将结果乘以 n。
例如,计算 factorial(4) 时,函数会进行以下递归调用:
factorial(4) 调用 factorial(3)
factorial(3) 调用 factorial(2)
factorial(2) 调用 factorial(1)
factorial(1) 返回 1(基本情况)
然后,这些递归调用开始返回,并计算:
factorial(2) 返回 2 * 1 = 2
`factor