计算组合数通常使用以下公式:
\[ C(n, r) = \frac{n!}{r!(n-r)!} \]
其中 \( n! \) 表示 \( n \) 的阶乘,即 \( n \times (n-1) \times (n-2) \times \ldots \times 1 \)。
1. Python
```python
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n - 1)
def combination(n, k):
return factorial(n) // (factorial(k) * factorial(n - k))
示例用法
n = 5
k = 2
print("C({}, {}) = {}".format(n, k, combination(n, k)))
```
2. C语言
```c
include
unsigned long long factorial(unsigned int n) {
unsigned long long result = 1;
for (int i = 1; i <= n; i++) {
result *= i;
}
return result;
}
int main() {
unsigned int m, k;
printf("Input m, k (m >= k > 0): ");
scanf("%u,%u", &m, &k);
unsigned long long p = factorial(m) / (factorial(k) * factorial(m - k));
printf("p = %llu\n", p);
return 0;
}
```
3. Java
```java
public class Combination {
public static void main(String[] args) {
int n = 5;
int k = 2;
System.out.println("C(" + n + ", " + k + ") = " + combination(n, k));
}
public static long combination(int n, int k) {
return factorial(n) / (factorial(k) * factorial(n - k));
}
public static long factorial(int n) {
long result = 1;
for (int i = 1; i <= n; i++) {
result *= i;
}
return result;
}
}
```
4. JavaScript
```javascript
function factorial(n) {
if (n === 0) {
return 1;
} else {
return n * factorial(n - 1);
}
}
function combination(n, k) {
return factorial(n) / (factorial(k) * factorial(n - k));
}
// 示例用法
let n = 5;
let k = 2;
console.log("C(" + n + ", " + k + ") = " + combination(n, k));
```
5. C++
```cpp
include
unsigned long long factorial(unsigned int n) {
unsigned long long result = 1;
for (int i = 1; i <= n; i++) {
result *= i;
}
return result;
}
int main() {
unsigned int m, k;
std::cout << "Input m, k (m >= k > 0): ";
std::cin >> m >> k;
unsigned long long p = factorial(m) / (factorial(k) * factorial(m - k));
std::cout << "p = "<< p << std::endl;
return 0;
}
```
这些代码示例展示了如何在不同的编程语言中计算组合数。你可以选择适合你的语言进行实现。