运用c++编写程序,用函数递归调用,计算10!
时间: 2024-02-25 08:52:22 浏览: 82
好的,以下是 C++ 代码实现:
```cpp
#include <iostream>
using namespace std;
int factorial(int n) {
if (n == 1) {
return 1;
} else {
return n * factorial(n-1);
}
}
int main() {
int result = factorial(10);
cout << result << endl; // 输出 3628800
return 0;
}
```
解释一下代码:
- `factorial(n)` 函数用来计算 n 的阶乘,使用递归调用的方式。
- 当 n 等于 1 时,递归结束,返回 1。
- 否则,递归调用 `factorial(n-1)`,并将结果乘以 n。
- `main()` 函数中,调用 `factorial(10)` 来计算 10!,并将结果保存在 `result` 变量中。
- 最后一行输出 `result` 的值,即 10! 的结果。
注意:C++ 中递归调用次数过多可能会导致栈溢出,所以在实际使用时需要注意递归深度的控制。
相关问题
用c++编写一个程序,使用递归法方法计算n!
在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`异常。
用c++编写递归函数实现n!
下面是用C++实现的递归函数实现n!的代码:
```c++
#include <iostream>
using namespace std;
int factorial(int n) {
if(n == 0) {
return 1;
} else {
return n * factorial(n-1);
}
}
int main() {
int n = 5;
cout << n << "! = " << factorial(n) << endl;
return 0;
}
```
在这个例子中,我们定义了一个名为`factorial`的函数,它接受一个整数参数`n`并返回`n`的阶乘。如果`n`等于0,那么它的阶乘为1;否则,它的阶乘等于`n`乘以`factorial(n-1)`的结果。在`main`函数中,我们调用`factorial`函数并打印出结果。
当我们调用`factorial(5)`时,它会递归调用`factorial`函数,并计算`5 * factorial(4)`、`4 * factorial(3)`、`3 * factorial(2)`、`2 * factorial(1)`和`1 * factorial(0)`的值,最后返回120,即5的阶乘。
阅读全文