用户输入任意大于0的正整数n,利用递推法求解n!的结果,例如:3!=3×2×1=6(提示:获取用户输入可以用“std::cin >> n;”实现)。
时间: 2024-09-12 15:13:02 浏览: 54
当你需要计算一个正整数n的阶乘(n!),可以使用递归算法。递归是一种解决问题的方法,它将大问题分解成更小的相同或类似的问题。对于n!的计算,基本思路如下:
1. 如果n等于1,那么n的阶乘就是1(因为1*1*...*1=1)。
2. 如果n大于1,那么n的阶乘就是n乘以(n-1)的阶乘(即n! = n * (n-1)!)。
这是一个递归函数的Python示例:
```cpp
#include <iostream>
using namespace std;
// 递归函数,计算阶乘
long long factorial(int n) {
if (n == 1)
return 1;
else
return n * factorial(n - 1);
}
int main() {
int n;
cout << "请输入一个正整数: ";
cin >> n;
// 检查输入是否合法
if (n <= 0 || n != static_cast<int>(n)) {
cerr << "错误!输入必须是正整数。" << endl;
return 1;
}
long long result = factorial(n);
cout << n << "! = " << result << endl;
return 0;
}
```
在这个例子中,`factorial()`函数会一直递归直到n等于1,然后逐层返回结果,最终得到n!的值。
阅读全文