estoy calcular el número de Fibonacci n-ésima utilizando (a) un enfoque lineal, y (b) this expresiónCálculo de número de Fibonacci n-ésima utilizando las fórmulas en pitón
Python código:
'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)
Para n> 71 veo que las dos funciones devuelven valores diferentes.
¿Esto se debe a la aritmética de coma flotante involucrada en efib()? Si es así, ¿es aconsejable calcular el número usando el matrix form?
No hay necesidad de construir una lista en la memoria con '.append'. Solo puede usar dos variables: consulte la definición de 'lfib' desde OP. – peterhurford