Resolver problemas de programación en Python
Hay al menos dos maneras de hacer esto.
El método más utilizado es el método iterativo y su idea central es
fib(n) =? mentira(n-1)? fibra(n-2)
Y en n
def fib(num): si n lt2 otras fibras (número 1) fibra (número 2)
Esta es una implementación muy simple. Funciona bien cuando el número de pasos es pequeño. Cuando el número de pasos es grande, se ralentizará debido a la iteración de segunda mano. Por lo tanto, los valores intermedios (número de pasos de 1 a n-1) se pueden guardar en el cálculo para reducir la cantidad de cálculo:
Este método mantiene un buen rendimiento al calcular 10000 pasos. Si necesita calcular esta secuencia varias veces, puede usar un objeto para guardar la lista de valores intermedios. En el siguiente código, la instancia de Fibonaci solo cuenta los pasos que aún no se han calculado, lo cual es más ventajoso cuando se llama repetidamente:
Clase Fibonacci (objeto):
.. .. historial=[1, 1]
....definir caché(self, cantidad):
.....mientras len(self . historial ) lt;=Cantidad:
............self . historial . append(self . historial[-1] self . historial[-2])
... ....¿Devolver? self . historial[número]
si __nombre__ == '__main__ ':
....fib =? Fibonacci()
....print(fib.calc(100))
....print(fib.calc(32))
....Imprimir(fib.calc(10000))