定义函数计算1+3/2!+5/3!+…,(2n+1)/n!
时间: 2023-09-09 21:07:07 浏览: 206
这个问题可以用递归方法来求解。
首先,为了方便起见,我们可以把这个式子改写成:
(1! * (3/2)! * (5/3)! * ... * ((2n-1)/n)!)
那么,我们可以定义一个递归函数,来计算这个式子的值。
具体来说,我们可以定义一个函数 `cal(n)`,表示计算 (1! * (3/2)! * (5/3)! * ... * ((2n-1)/n)!) 的值。
对于 cal(n),我们可以把它分成两部分,分别计算前面的部分和后面的部分。
前面的部分比较好计算,我们可以直接用递归调用 `cal(n-1)` 来计算,也就是:
(1! * (3/2)! * (5/3)! * ... * ((2n-3)/(n-1))!) = cal(n-1)
而后面的部分比较麻烦,因为我们需要计算 (2n-1)/n!。
为了解决这个问题,我们可以先计算 n! 的值,然后再把 (2n-1)/(n!) 求出来。
计算 n! 的值也可以用递归方法,我们可以定义一个函数 `fact(n)` 来求 n! 的值。
具体来说,我们可以用下面的递归式来计算 n!:
fact(n) = 1,当 n=0 或 n=1 时
fact(n) = n * fact(n-1),当 n>1 时
有了计算 n! 的函数和前面的部分的值,我们就可以计算后面的部分的值了。
具体来说,我们可以把 (2n-1)/(n!) 写成 (2n * (2n-2) * (2n-4) * ... * 3 * 1) / (n * (n-1) * (n-2) * ... * 1) 的形式,然后将分子和分母分别用递归调用 `fact(n)` 来求解。
因此,我们可以得到如下的递归函数:
```
def fact(n):
if n == 0 or n == 1:
return 1
else:
return n * fact(n-1)
def cal(n):
if n == 0:
return 1
else:
return cal(n-1) * (2*n-1) / fact(n)
```
这样,我们就可以用 `cal(n)` 来求解这个式子的值了。
阅读全文