递归实现阶乘需定义终止条件和递归调用,C++中factorial(n)函数通过n==0或1时返回1、否则返回n*factorial(n-1)计算阶乘,代码简洁但受限于整型范围与栈深度。

在C++中,递归是一种函数调用自身的方法。实现阶乘时,递归非常直观:n的阶乘等于n乘以(n-1)的阶乘,直到n为0或1时停止递归。
阶乘的数学定义
阶乘(factorial)表示从1到n所有正整数的乘积,记作n!。其定义如下:
0! = 1
n! = n × (n-1)! (当n > 0)
立即学习“C++免费学习笔记(深入)”;
递归实现步骤
编写递归函数计算阶乘,需要明确两个关键部分:
- 终止条件:当n为0或1时,返回1,避免无限递归。
- 递归调用:返回n乘以factorial(n-1)的结果。
C++代码示例
#includeusing namespace std; int factorial(int n) { // 终止条件 if (n == 0 || n == 1) { return 1; } // 递归调用 return n * factorial(n - 1); }
int main() { int num; cout << "请输入一个非负整数: "; cin >> num;
if (num zuojiankuohaophpcn 0) { cout zuojiankuohaophpcnzuojiankuohaophpcn "阶乘不适用于负数!" zuojiankuohaophpcnzuojiankuohaophpcn endl; } else { cout zuojiankuohaophpcnzuojiankuohaophpcn num zuojiankuohaophpcnzuojiankuohaophpcn "! = " zuojiankuohaophpcnzuojiankuohaophpcn factorial(num) zuojiankuohaophpcnzuojiankuohaophpcn endl; } return 0;}
运行说明与注意事项
该程序能正确计算较小数值的阶乘。例如输入5,输出120。但需注意:
- 输入负数应做判断处理,避免错误。
- 由于int类型范围限制,n过大(如超过12)会导致溢出。
- 递归深度受限于栈空间,极端情况下可能引发栈溢出。
基本上就这些,递归写法简洁易懂,适合学习理解阶乘逻辑。











