用來練手的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用于分別計算分子分母上的斐波那契數列的值。