用c++编写一个程序,使用递归法方法计算n!
时间: 2024-10-24 22:08:26 浏览: 15
c++ 求n!、算24点、汉诺塔
在C++中,你可以使用递归的方式来编写一个计算阶乘的程序。下面是一个简单的示例:
```cpp
#include <iostream>
// 递归函数,计算n的阶乘
unsigned long long factorial(int n) {
if(n == 0) { // 递归终止条件:0的阶乘是1
return 1;
} else {
// 递归调用自身,n! = n * (n-1)!
return n * factorial(n - 1);
}
}
int main() {
int num;
std::cout << "请输入一个正整数:";
std::cin >> num;
// 检查输入是否合法
if(num < 0) {
std::cout << "错误:输入值必须是非负整数。\n";
} else {
try {
unsigned long long result = factorial(num);
std::cout << " " << num << "! 的结果是:" << result << "\n";
} catch(std::overflow_error& e) {
std::cout << "错误:计算结果过大,超过数值范围。\n";
}
}
return 0;
}
```
这个程序首先询问用户输入一个正整数,然后递归计算其阶乘。如果输入的数太小(即0或1),直接返回1作为基本情况。当n大于1时,递归地将n乘以(n-1)!。需要注意的是,由于阶乘的增长速度非常快,对于较大的n,可能会导致数值溢出,因此需要处理可能出现的`std::overflow_error`异常。
阅读全文