使用DEV C++编写函数(fact),通过递归调用,计算 n!/(m!(n-m)!) ,其中,n>m
时间: 2024-09-15 12:08:41 浏览: 57
C语言程序设计-编写main程序调用函数fact求解从m个元素选n个元素的组合数的个数;组合数=m!(n!.(m-n)!);
5星 · 资源好评率100%
在DEV C++中,你可以创建一个名为`factorial()`的递归函数来计算给定条件下的组合数,即`n! / (m!(n-m)!)`。这里是一个简单的示例代码:
```cpp
#include <iostream>
// 定义递归函数 factorial
unsigned long long factorial(int n, int m) {
// 基线条件:当 n 或者 m 之一等于 0 时,直接返回 1
if (n == 0 || m == 0) {
return 1;
}
// 如果 n > m,则直接返回 n!,因为 (n-m)! 被忽略了
else if (n > m) {
return factorial(n - 1, m);
}
// 一般情况:递归调用自身,将 m! 和 (n-m)! 简化为 n! 的因子
else {
return factorial(n - 1, m - 1) * n; // 因为 n! = (n-1)! * n
}
}
int main() {
int n, m;
std::cout << "请输入两个正整数 n 和 m: ";
std::cin >> n >> m;
// 检查输入的有效性,确保 n > m
if (n <= m) {
std::cerr << "错误:n 必须大于 m。\n";
return 1;
}
// 计算并输出结果
unsigned long long result = factorial(n, m);
std::cout << "结果是: " << result << "\n";
return 0;
}
```
阅读全文