2、用户输入任意大于0的正整数n,利用递推法求解n!的结果,例如:3!=3×2×1=6(提示:获取用户输入可以用“std::cin >> n;”实现)。 3、利用递归法求解第2题问题。cpp编写
时间: 2024-09-12 13:12:48 浏览: 50
在C++中,你可以使用递归函数来计算任意正整数n的阶乘(n!)。递归是一种解决问题的技术,它通过将问题分解成规模更小的相同问题来解决。下面是一个简单的C++程序示例,用于实现这个功能:
```cpp
#include <iostream>
// 定义递归函数来计算阶乘
unsigned long long factorial(int n) {
// 基线条件:0和1的阶乘都是1
if (n == 0 || n == 1)
return 1;
else
// 递归条件:n的阶乘等于n乘以前面所有数的阶乘
return n * factorial(n - 1);
}
int main() {
int n;
std::cout << "请输入一个大于0的正整数: ";
std::cin >> n;
// 检查输入是否有效,防止负数或非整数
if (n < 0) {
std::cerr << "错误: 输入必须是非负整数。\n";
return 1;
}
// 计算并打印阶乘结果
unsigned long long result = factorial(n);
std::cout << n << "! = " << result << "\n";
return 0;
}
```
在这个程序里,`factorial`函数是递归的核心部分,当`n`不为1时,函数会不断地调用自身减去1,直到达到基础情况。然后逐级返回结果,最终得到n的阶乘。
阅读全文