用来练手的python练习题,原题链接 : python练习实例24
题干: 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。
拿到题目观察数列,我们不难发现,分子和分母都是斐波那契数列,因此我们只需要用递归或是循环分别计算出每一项的分子和分母对应的值,源代码如下:
def sum_fibonacci_frac(length_sequence):
result = 0
for i in range(1,length_sequence+1):
if i == 1:
numerator_2 = 2
denominator_2 = 1
result += numerator_2/denominator_2
elif i == 2:
numerator_1 = 3
denominator_1 = 2
result += numerator_1/denominator_1
else:
numerator = numerator_2 + numerator_1
denominator = denominator_2 + denominator_1
result += numerator/denominator
numerator_2 = numerator_1
denominator_2 = denominator_1
numerator_1 = numerator
denominator_1 = denominator
return result
输出结果如下:
代码中定义了函数可以用于计算题干中数列的前n项和,n由参数length_sequence决定。我们知道对于斐波那契数列而言,总满足
F
[
n
]
=
F
[
n
−
1
]
+
F
[
n
−
2
]
F[n] = F[n-1] + F[n-2]
F[n]=F[n−1]+F[n−2]。因此我们定义numrator_1,numrator_2,denominator_1,denominator_2用于分别计算分子分母上的斐波那契数列的值。