编写函数fun(),根据公式p=m!/(n!*(m-n)!)求p的值,结果由函数值返回。
时间: 2023-05-31 17:17:54 浏览: 322
C语言程序设计-编写函数fun,求任一整数m的n次方;.c
5星 · 资源好评率100%
### 回答1:
好的,下面是函数fun()的代码:
```python
def fun(m, n):
p = 1
for i in range(1, n+1):
p *= m - n + i
p /= i
return p
```
其中,m和n分别为输入的参数,表示公式中的m和n。函数中使用了循环来计算阶乘,并根据公式计算出p的值,最后将结果返回。
### 回答2:
首先,需要了解阶乘的概念。阶乘就是一个正整数与小于它的正整数之积,例如:5!=5×4×3×2×1=120。在阶乘的计算中,如果要计算m!/(n!*(m-n)!),可以先计算m!,再计算n!和(m-n)!,然后进行除法运算。因此,可以将函数分为三个步骤进行计算。
函数fun的输入参数为m和n,这里不需要考虑m和n的大小关系,因为公式中已经包含了判断m和n的关系。函数的返回值为p,代表公式m!/(n!*(m-n)!)的计算结果。
第一步,计算m!,这里需要使用循环结构,从1循环到m,将每次循环得到的数与上一次循环的数累乘起来即可。
第二步,计算n!和(m-n)!,需要使用循环结构,从1循环到n和(m-n),将每次循环得到的数与上一次循环的数累乘起来即可。
第三步,进行除法运算,将第一步得到的m!除以第二步得到的n!和(m-n)!的积即可得到最终结果p。
完整的函数代码如下:
```python
def fun(m, n):
p = 1
for i in range(1, m+1):
p *= i
x = 1
for i in range(1, n+1):
x *= i
y = 1
for i in range(1, m-n+1):
y *= i
p = p / (x * y)
return p
```
需要注意的是,上述代码中使用了循环结构,因此对于非常大的m和n,可能会造成计算时间较长的问题。如果需要处理非常大的阶乘,可以使用其他算法进行优化或者采用第三方库进行计算。
### 回答3:
题目要求我们编写一个函数fun(),用来计算公式p=m!/(n!*(m-n)!)的结果。
首先,我们需要知道阶乘的概念,即一个数的阶乘是它本身与它之前的所有正整数的积。例如,4!= 4x3x2x1=24。
接着,根据公式p=m!/(n!*(m-n)!)可以发现,我们需要计算三个阶乘的结果,所以我们可以写出如下的函数代码:
```
def fun(m, n):
# 计算 m! 的值
m_factorial = 1
for i in range(1, m + 1):
m_factorial *= i
# 计算 n! 的值
n_factorial = 1
for i in range(1, n + 1):
n_factorial *= i
# 计算 (m-n)! 的值
mn_factorial = 1
for i in range(1, m - n + 1):
mn_factorial *= i
# 计算 p 的值
p = m_factorial / (n_factorial * mn_factorial)
# 返回 p 的值
return p
```
在这段代码中,我们首先定义了一个函数fun(m, n),接受两个参数m和n。接着,我们分别用三个for循环计算了m!, n!和(m-n)!的值,并将它们的积除以n!和(m-n)!的积,得到了公式p的值。最后,我们返回了p的值。
需要注意的是,由于计算阶乘的结果很容易溢出,所以当m或n的值比较大时,可能会得到错误的结果。要避免这种情况,我们可以使用一些数值计算库来进行高精度计算。
阅读全文