【Python3練習題 019】 有一分數序列:2/1,3/2,5/3,8/5,13/8,21/13...求出這個數列的前20項之和。


后一個分數的分子=前一個分數的分子+分母,后一個分數的分母=前一個分數的分子,循環個20次就有結果。注意,假設分子為a,分母為b,雖然 a = a + b,

但此時a已經變成 a+b 了,所以再給b重新賦值的時候,得是 (a+b)-b 才能等於原分母b,所以重新賦值時就得寫成 a-b

 

方法一

from fractions import Fraction


def fibonacci(n):
a, b = 1, 2
res = [1]
i = 1
while i < n:
a, b = b, a+b
res.append(a)
i += 1
else:
return res

result = fibonacci(21)

sum_result = sum([Fraction(i[0],i[1]) for i in zip(result[1:],result[0:-1])])
print (sum_result)



方法二
from fractions import Fraction
 
sum = 0
a, b = 2 , 1
for i in range ( 20 ):
     sum = sum + Fraction(a / b)
     a = a + b
     b = a - b
print ( sum )
 
方法三
sum = 0
a, b = 2 , 1
for i in range ( 20 ):
     sum = sum + a / b
     a = a + b
     b = a - b
print ( sum )


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM