C编写函数fun(),根据公式p=m!/(n!*(m-n)!)求p的值,结果由函数值返回。
时间: 2024-02-06 21:09:55 浏览: 103
下面是一个简单的 C 函数,用于计算公式 p=m!/(n!*(m-n)!) 的值并返回:
```c
int factorial(int num) {
if(num <= 1) {
return 1;
}
else {
return num * factorial(num - 1);
}
}
int fun(int m, int n) {
int p, mf, nf, mnf;
mf = factorial(m);
nf = factorial(n);
mnf = factorial(m - n);
p = mf / (nf * mnf);
return p;
}
```
在这个函数中,我们首先定义了一个递归函数 `factorial()`,用于计算给定数字的阶乘。然后,在 `fun()` 函数中,我们使用了 `factorial()` 函数来计算 m、n 和 m-n 的阶乘,然后使用这些值计算公式 p 的值,并将结果返回。
注意:这个函数可能会在输入较大的数字时出现整数溢出的情况,需要进行额外的处理。
相关问题
用c语言编写函数fun(),根据公式p=m!/(n!*(m-n)!)求p的值,结果由函数值返回。
好的,以下是用C语言编写的函数fun(),可根据公式p=m!/(n!*(m-n)!)求p的值,并将结果作为函数值返回。
```c
#include <stdio.h>
int factorial(int num) {
if (num == 0) {
return 1;
} else {
return num * factorial(num - 1);
}
}
int fun(int m, int n) {
int p = factorial(m) / (factorial(n) * factorial(m - n));
return p;
}
int main() {
int m, n;
printf("请输入m和n的值:\n");
scanf("%d %d", &m, &n);
int result = fun(m, n);
printf("结果为:%d", result);
return 0;
}
```
在这个程序中,我们定义了一个名为factorial()的函数来计算一个数的阶乘。然后,我们定义了一个名为fun()的函数来计算公式p=m!/(n!*(m-n)!)的值,并将结果作为函数值返回。
在主函数中,我们从用户那里获取输入值m和n,并调用fun()函数来计算结果。最后,我们将结果打印在屏幕上。
希望这个程序能够回答你的问题!
编写函数fun(),根据公式p=m!/(n!*(m-n)!)求p的值,结果由函数值返回。
以下是函数fun()的代码实现:
```python
def fun(m, n):
p = 1
for i in range(1, n+1):
p *= m - i + 1
p //= i
return p
```
该函数使用了循环计算阶乘,避免了使用递归可能导致的栈溢出问题。在每次循环中,更新p的值,同时使用整除运算符“//”避免了精度损失。最后返回计算结果p。
阅读全文