组合代码通常用于计算从n个不同元素中选取k个元素的组合数,不考虑它们的排列顺序。组合数的计算公式是C(n, k) = n! / (k! * (n-k)!),其中"!"表示阶乘。以下是一个使用C语言编写的组合数计算函数:
```c
include
// 计算阶乘
long long factorial(int n) {
long long result = 1;
for (int i = 1; i <= n; i++) {
result *= i;
}
return result;
}
// 计算组合数
long long combination(int n, int k) {
if (k == 0 || k == n) {
return 1;
}
return factorial(n) / (factorial(k) * factorial(n - k));
}
int main() {
int n, k;
printf("请输入n和k的值(n >= k >= 0):");
scanf("%d,%d", &n, &k);
long long result = combination(n, k);
printf("C(%d, %d) = %lld\n", n, k, result);
return 0;
}
```
代码解释:
阶乘函数 `factorial`
输入一个整数 `n`,返回 `n` 的阶乘。
使用一个循环从1乘到 `n`,计算阶乘。
组合数函数 `combination`
输入两个整数 `n` 和 `k`,返回从 `n` 个元素中选取 `k` 个元素的组合数。
如果 `k` 为0或 `n`,则组合数为1。
否则,使用组合公式 `C(n, k) = n! / (k! * (n-k)!)` 计算组合数。
主函数 `main`
提示用户输入 `n` 和 `k` 的值。
调用 `combination` 函数计算组合数并输出结果。
这个程序可以计算任意给定的 `n` 和 `k` 的组合数,适用于组合数学中的基本问题。