c++ 阶乘
时间: 2025-05-03 08:46:28 浏览: 28
### 阶乘计算的 C++ 实现
在 C++ 中,可以通过多种方式来实现阶乘函数。以下是两种常见的方法:迭代法和递归法。
#### 方法一:迭代法
通过循环逐步相乘的方式可以有效计算阶乘。这种方法避免了递归可能带来的栈溢出问题[^1]。
```cpp
#include <iostream>
unsigned long long factorialIterative(int n) {
unsigned long long result = 1;
for (int i = 2; i <= n; ++i) {
result *= i;
}
return result;
}
int main() {
int number;
std::cout << "Enter a positive integer: ";
std::cin >> number;
if (number >= 0) {
std::cout << "Factorial of " << number << " is " << factorialIterative(number) << std::endl;
} else {
std::cout << "Factorial is not defined for negative numbers." << std::endl;
}
return 0;
}
```
此代码片段展示了如何利用 `for` 循环逐次累乘得到最终的结果[^1]。
#### 方法二:递归法
递归是一种更简洁的方法,它基于数学定义 \(n! = n \times (n-1)!\),其中 \(0! = 1\)。需要注意的是,当输入较大时可能会引发堆栈溢出错误[^2]。
```cpp
#include <iostream>
unsigned long long factorialRecursive(int n) {
if (n == 0 || n == 1) { // Base case
return 1;
} else {
return n * factorialRecursive(n - 1); // Recursive call
}
}
int main() {
int number;
std::cout << "Enter a positive integer: ";
std::cin >> number;
if (number >= 0) {
std::cout << "Factorial of " << number << " is " << factorialRecursive(number) << std::endl;
} else {
std::cout << "Factorial is not defined for negative numbers." << std::endl;
}
return 0;
}
```
上述程序实现了递归调用来求解阶乘的功能,并处理了基本情形即 \(n=0\) 或 \(n=1\)[^2]。
#### 数据类型的注意事项
由于阶乘增长速度极快,在实际应用中应特别注意数据类型的选择以防止整数溢出。这里选用 `unsigned long long` 类型能够支持较大的数值范围,但仍有限制。对于更大的需求,则需考虑其他库或者自定义大数运算逻辑[^3]。
阅读全文
相关推荐

















