Ich Berechnung der n-te Fibonacci-Zahl mit (a) einen linearen Ansatz und (b) this AusdruckBerechnung n-te Fibonacci-Zahl, die Formeln in Python
Python-Code:
'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)
Für n> 71 sehe ich, dass die beiden Funktionen unterschiedliche Werte zurückgeben.
Liegt dies an der Gleitkommaarithmetik, die in efib() involviert ist? Wenn ja, ist es dann ratsam, die Nummer mit der matrix form zu berechnen?
Es gibt keine Notwendigkeit, eine Liste im Speicher mit '.append' aufzubauen. Sie können einfach zwei Variablen verwenden - siehe die Definition von 'lfib' aus OP. – peterhurford