编写函数,输入n和m的值,计算Cmn=n!/m!(n-m)!
时间: 2024-01-23 19:04:16 浏览: 25
这个公式与组合数的定义不同,正确的公式应该是 Cmn = m! / (n! * (m-n)!),请参考我之前回答的答案。
下面是使用 Python 代码实现正确公式的组合数函数:
```python
def combination(n, m):
"""
计算组合数 Cmn。
"""
if n < 0 or m < 0 or n > m:
return None
# 计算阶乘
def factorial(num):
if num == 0:
return 1
else:
return num * factorial(num - 1)
return factorial(m) / (factorial(n) * factorial(m - n))
```
对于输入 n=3, m=7,调用该函数可以得到:
```python
>>> combination(3, 7)
35.0
```
因此,C37 = 35。
相关问题
编写函数,输入n和m的值,计算Cmn
可以使用以下公式计算组合数 Cmn:
Cmn = m! / (n! * (m-n)!)
其中,! 表示阶乘运算,即一个正整数的阶乘是指从1到这个数所有正整数的乘积。
下面是使用 Python 代码实现该函数:
```python
def combination(n, m):
"""
计算组合数 Cmn。
"""
if n < 0 or m < 0 or n > m:
return None
# 计算阶乘
def factorial(num):
if num == 0:
return 1
else:
return num * factorial(num - 1)
return factorial(m) / (factorial(n) * factorial(m - n))
```
对于输入 n=3, m=7,调用该函数可以得到:
```python
>>> combination(3, 7)
35.0
```
因此,C37 = 35。
请用C++语言帮我编写一个程序,求组合Cmn的值,其中Cmn=n!/m!(n-m)!。要求:通过调用自定义递归函数fac(int n),求得n的阶乘值,再在主函数中调用fac函数求出Cmn的值。
以下是用C++语言编写的程序,可以计算组合Cmn的值:
```c++
#include<iostream>
using namespace std;
int fac(int n) { // 自定义递归函数fac,用于求n的阶乘
if (n == 0 || n == 1) {
return 1;
} else {
return n * fac(n - 1);
}
}
int Cmn(int m, int n) { // 主函数中调用fac函数求出Cmn的值
int result = fac(n) / (fac(m) * fac(n - m));
return result;
}
int main() {
int m, n;
cout << "请输入m和n的值:";
cin >> m >> n;
cout << "Cmn的值为:" << Cmn(m, n) << endl;
return 0;
}
```
使用方法:在命令行或者IDE中运行该程序,按照提示输入m和n的值,程序会输出Cmn的值。