后一個分數的分子=前一個分數的分子+分母,后一個分數的分母=前一個分數的分子,循環個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
)