4.4 用c语言求组合数:根据下列公式可以算出从n个不同元素中取出 m个元素(m<-n)的组合数。输入两个正整数m 和n(m<n),计算并输出组合数。要求定义和调用函数 fact(a)计算n!,函数类型是 double
时间: 2024-10-25 10:07:18 浏览: 18
在C语言中,我们可以通过递归的方式实现组合数的计算,利用题目给出的公式 C(n, m) = n! / [m!(n-m)!]。其中 n! 表示n的阶乘。首先需要定义一个函数 `fact(a)` 来计算阶乘,然后通过这个函数来计算组合数。
下面是C语言的代码实现:
```c
#include <stdio.h>
// 定义计算阶乘的函数
double fact(int a) {
if (a == 0 || a == 1)
return 1;
else
return a * fact(a - 1);
}
// 计算组合数的函数
double combination(int n, int m) {
// 检查输入是否合法
if (m < 0 || m > n || n < 0)
return -1; // 返回错误值
// 使用阶乘计算组合数
return fact(n) / (fact(m) * fact(n - m));
}
int main() {
int m, n;
printf("请输入m和n(m < n):");
scanf("%d %d", &m, &n);
// 调用组合函数并输出结果
double result = combination(n, m);
if (result != -1) {
printf("C(%d, %d) = %.f\n", n, m, result);
} else {
printf("非法输入!\n");
}
return 0;
}
```
阅读全文