Python | Programa para calcular enésimo término de una serie de Fibonacci

Aquí, vamos a aprender cómo calcular el enésimo término de una serie de Fibonacci usando el programa Python?

programa de Python para calcular enésimo término de la serie de Fibonacci con la ayuda de dos enfoques (hay muchos enfoques para calcular la enésima plazo).

Descripción:

  1. Primera aproximación: Programación Dinámica
    En este enfoque, calculamos todos los términos de la serie de Fibonacci hasta n y si tenemos que calcular cualquier otro término que es menor que n, entonces nosotros no tenemos que calcular de nuevo.
  2. segundo enfoque: por la fórmula
    En este enfoque se calcula el n-ésimo término de la serie de Fibonacci con la ayuda de una fórmula.
  3.     Formula:
    phi = ( 1 + sqrt(5) ) / 2
    An = phin/ sqrt(5)

Ejemplo:

    Input:
for n = 5
for n = 8
Output:
a5 = 5
a8 = 21

Procedimiento: enfoque de programación dinámica

    L[0] = 0, L[1] = 1
For loop from 2 to n+1
L[i] = L[i-1] + L[i -2]
End of for

Como se puede observar que también estamos almacenando cada valor calculado, por lo que también podemos usarlos más tarde si es necesario .

Este es el beneficio de Programación Dinámica sobre recursividad.

código Python para calcular n-ésimo término de una serie Fibonacci

def dynamic_fibonacci(n):
'''
    This function will calculate fobonacci
    series with the help of dynamic
    programming.
    '''
l = [0]*(n+1)
l[0] = 0
l[1] = 1
for i in range(2, n+1):
l[i] = l[i-1] + l[i-2]
return l
# Time complexity O(n)
def fibonacci_by_formula(n):
'''
    This function will calculate n-th
    term of fibonacci series with the
    help of a formula.
    '''
from math import sqrt
phi = (1 + sqrt(5))/2
fib = round(pow(phi, n)/sqrt(5))
return fib
# Time complexity O(1)
def main():
n = 8
lst = dynamic_fibonacci(n)
x = fibonacci_by_formula(n)
print('By Dynamic Programming:',lst[n])
print()
print('By Formula:',x)
main()

salida

By Dynamic Programming: 21
By Formula: 21


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *