用来练手的python练习题,原题链接 : python练习实例24
题干: 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。
拿到题目观察数列,我们不难发现,分子和分母都是斐波那契数列,因此我们只需要用递归或是循环分别计算出每一项的分子和分母对应的值,源代码如下:
def sum_fibonacci_frac(length_sequence):result = 0for i in range(1,length_sequence+1):if i == 1:numerator_2 = 2denominator_2 = 1result += numerator_2/denominator_2elif i == 2:numerator_1 = 3denominator_1 = 2result += numerator_1/denominator_1else:numerator = numerator_2 + numerator_1denominator = denominator_2 + denominator_1result += numerator/denominatornumerator_2 = numerator_1denominator_2 = denominator_1numerator_1 = numeratordenominator_1 = denominatorreturn 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用于分别计算分子分母上的斐波那契数列的值。