C++编写两个函数分别求n!和 的程序。main()调用这两个函数,分别输出s1和s2。其中: (m,n为正整数且m>n)
时间: 2024-11-24 11:42:50 浏览: 17
数据结构-c语言-带main函数-串2-串复制-根据标准库函数strcpy ()和定义求串复制函数的两种方法。
在C++中,你可以使用递归和循环的方式来计算阶乘(n!)和组合数(C(n,m))。以下是两个函数的示例代码:
```cpp
#include <iostream>
// 计算阶乘
unsigned long long factorial(int n) {
if (n == 0 || n == 1)
return 1;
else
return n * factorial(n - 1);
}
// 计算组合数 C(m, n),这里采用公式 C(n, m) = n! / [m! * (n-m)!]
unsigned long long combination(int m, int n) {
return factorial(m) / (factorial(n) * factorial(m - n));
}
int main() {
int m, n;
std::cout << "请输入m值(m > n): ";
std::cin >> m;
std::cout << "请输入n值: ";
std::cin >> n;
// 检查输入条件
if (m <= n) {
std::cerr << "错误:m应该大于n。\n";
return 1; // 如果不满足条件,返回错误
}
unsigned long long s1 = factorial(m);
unsigned long long s2 = combination(m, n);
std::cout << "m! 的结果是: " << s1 << "\n";
std::cout << "C(" << m << ", " << n << ") 的结果是: " << s2 << "\n";
return 0;
}
```
在这个程序中,`factorial`函数用于递归计算阶乘,而`combination`函数则利用阶乘的结果除以特定的因子来得到组合数。注意,因为结果可能非常大,所以使用了`unsigned long long`类型来存储。
阅读全文