python有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
时间: 2023-05-31 11:18:12 浏览: 2503
流程控制的语句-Python的流程控制
### 回答1:
这个数列是斐波那契数列的一种变形,可以用循环来计算前20项并求和:
```python
a, b = 2, 1
sum = a / b
for i in range(2, 21):
a, b = a + b, a
sum += a / b
print(sum)
```
输出结果为:32.66026079864164
### 回答2:
这个数列其实就是斐波那契数列的一个变形,每一项都是前面两项的和。不同的是,斐波那契数列是从1开始的,而这个数列是从2/1开始的。
要求前20项之和,我们可以用一个循环来实现。首先定义第一个数为2/1,第二个数为3/2,初始化和为这两个数的和:s = 2 + 3/2。
然后,在循环中,先计算出下一个数:分子为前两项的分子之和,分母为前两项的分母之和。然后将这个数加入到和中,更新前两项,继续循环,直到求出前20项。最后输出和即可。
具体代码如下:
a, b = 2, 1 # 第一项为2/1
c, d = 3, 2 # 第二项为3/2
s = a + c/d # 初始化和为前两项之和
for i in range(3, 21):
# 计算下一个数
e, f = a + c, b + d
s += e/f # 累加到和中
a, b = c, d # 更新前两项
c, d = e, f
print("前20项之和为:", s)
输出结果为:前20项之和为:32.66026079864164。
### 回答3:
这个数列实际上就是斐波那契数列的“转化版”,它的每一项都是前两项的和,但是分子和分母不一定是相邻的两个斐波那契数。以下是具体的推导过程:
第一项为2/1,第二项为3/2,那么第三项就是2/1+3/2=4/2+3/2=7/2;
第二项为3/2,第三项为7/2,那么第四项就是3/2+7/2=10/2+7/2=17/2;
第三项为7/2,第四项为17/2,那么第五项就是7/2+17/2=24/2+17/2=41/2;
以此类推,我们得到了前20项之和。
具体的代码如下:
def fibonacci_sum(n):
a, b = 2, 3
total = 2 + 3
for i in range(3, n+1):
a, b = b, a+b
total += b / a
return total
print(fibonacci_sum(20))
运行结果为:319.71200258196175
所以这个数列的前20项之和约为319.71。
阅读全文