ja obliczenia n-liczbę Fibonacciego pomocą (a) liniowy sposób i (B) this ekspresjiObliczanie n-liczbę Fibonacciego przy użyciu formuły pytona
Pythona Kod:
'Different implementations for computing the n-th fibonacci number'
def lfib(n):
'Find the n-th fibonacci number iteratively'
a, b = 0, 1
for i in range(n):
a, b = b, a + b
return a
def efib(n):
'Compute the n-th fibonacci number using the formulae'
from math import sqrt, floor
x = (1 + sqrt(5))/2
return long(floor((x**n)/sqrt(5) + 0.5))
if __name__ == '__main__':
for i in range(60,80):
if lfib(i) != efib(i):
print i, "lfib:", lfib(i)
print " efib:", efib(i)
Dla n> 71 widzę, że te dwie funkcje zwracają różne wartości.
Czy wynika to z arytmetyki zmiennoprzecinkowej związanej z efib()? Jeśli tak, to czy jest to wskazane, aby obliczyć liczbę za pomocą matrix form?
Nie ma potrzeby, aby stworzyć listę w pamięci z '.append'. Możesz po prostu użyć dwóch zmiennych - patrz definicja 'lfib' z OP. – peterhurford