编写函数求排列数n!/(n-m)!
时间: 2023-10-06 14:14:03 浏览: 123
可以使用循环或递归的方法来实现求排列数的函数,以下是使用循环的示例代码:
```python
def permutation(n, m):
result = 1
for i in range(n-m+1, n+1):
result *= i
return result
```
其中,循环从 n-m+1 开始,依次乘以 n, n-1, ..., n-m+2, n-m+1,即为所求的排列数。
例如,要求 5 个元素中选出 3 个元素的排列数,可以调用 `permutation(5, 3)`,得到结果 60。
需要注意的是,当 n < m 时,排列数为 0。
相关问题
1.用简单的c语言编写函数,求排列数 。要求在主函数中输入自然数m和n的值,调用函数,并输出结果。
### 回答1:
以下是求排列数的C语言函数代码:
```c
#include <stdio.h>
int perm(int m, int n) {
int i, result = 1;
for (i = m; i > m - n; i--) {
result *= i;
}
return result;
}
int main() {
int m, n;
printf("请输入自然数m和n的值:");
scanf("%d %d", &m, &n);
printf("%d的%d排列数为%d\n", m, n, perm(m, n));
return 0;
}
```
函数`perm`用于计算m的n排列数,通过循环计算m * (m - 1) * (m - 2) * ... * (m - n + 1)的值,并返回结果。
主函数中首先输入自然数m和n的值,然后调用`perm`函数计算m的n排列数,并输出结果。
注意:此代码没有处理输入错误的情况,如输入非自然数或n大于m等。
### 回答2:
以下是一个用C语言编写的函数,用于计算排列数。主函数中输入自然数m和n的值,调用该函数,并输出结果:
```c
#include <stdio.h>
// 函数用于计算排列数
// 参数m和n分别为自然数m和n的值
// 返回排列数的结果
int permutation(int m, int n) {
int result = 1;
// 计算m的阶乘
for (int i = m; i > 0; i--) {
result *= i;
}
// 结果除以(n-m)的阶乘,得到排列数
for (int i = n - m; i > 0; i--) {
result /= i;
}
return result;
}
int main() {
int m, n;
// 输入自然数m和n的值
printf("请输入自然数m和n的值:");
scanf("%d%d", &m, &n);
// 调用函数计算排列数,并输出结果
int result = permutation(m, n);
printf("排列数为:%d\n", result);
return 0;
}
```
在这个程序中,我们定义了一个`permutation`函数,该函数使用了两个循环来计算排列数。首先,我们计算m的阶乘,然后我们将其除以(n-m)的阶乘,得到排列数的结果。在主函数中,我们首先输入自然数m和n的值,然后调用`permutation`函数计算排列数,并将结果输出到控制台上。
### 回答3:
下面是用C语言编写的求排列数的函数:
```c
#include <stdio.h>
// 计算阶乘
int factorial(int num)
{
int result = 1;
for (int i = 1; i <= num; i++)
{
result *= i;
}
return result;
}
// 计算排列数
int permutation(int m, int n)
{
int result = factorial(m) / factorial(m - n);
return result;
}
int main()
{
int m, n;
printf("请输入m和n的值:");
scanf("%d %d", &m, &n);
int result = permutation(m, n);
printf("排列数为:%d\n", result);
return 0;
}
```
在主函数中,我们首先通过`scanf`函数输入自然数m和n的值,然后调用`permutation`函数来计算排列数,最后输出结果。函数`factorial`用于计算n的阶乘,函数`permutation`根据排列数的公式公式`P(m, n) = m! / (m-n)!`,利用`factorial`函数来计算排列数。
用简单的c语言编写函数,求排列数 。要求在主函数中输入自然数m和n的值,调用函数,并输出结果
以下是使用递归实现排列数的C语言函数:
```c
#include <stdio.h>
int permutation(int m, int n) {
if (n == 0) {
return 1;
} else {
return m * permutation(m - 1, n - 1);
}
}
int main() {
int m, n, result;
printf("请输入自然数m和n的值:\n");
scanf("%d %d", &m, &n);
result = permutation(m, n);
printf("%d的%d次排列数为%d\n", m, n, result);
return 0;
}
```
函数 `permutation` 采用递归的方式求解排列数,如果 n = 0,则返回1,否则递归调用自身并返回 m * permutation(m - 1, n - 1)。
在 `main` 函数中,输入自然数 m 和 n 的值,调用函数 `permutation` 并输出结果。
相关推荐
![-](https://csdnimg.cn/download_wenku/file_type_lunwen.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)