LINUX

3 formas de generar la secuencia de Fibonacci en Python

generar secuencia de fibonacci en python

La serie de Fibonacci es una serie muy famosa en matemáticas. Cada número de la secuencia es la suma de los dos números anteriores. Entonces, la secuencia es 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, etc. La ecuación matemática que lo describe es An+2= An+1 + An.

Podemos generar la secuencia de Fibonacci usando muchos enfoques. En este tutorial, le mostraré cómo generar la secuencia de Fibonacci en Python usando algunos métodos.

Generar secuencia de Fibonacci (método simple)

En la secuencia de Fibonacci, a excepción de los dos primeros términos de la secuencia, todos los demás términos son la suma de los dos términos anteriores. Los dos primeros números de la serie de Fibonacci son 0 y 1. A partir del tercer número, la serie será la suma de los 2 números anteriores.

#Program to generate the Fibonacci Sequence till n
n=int(input("Enter the value of 'n': "))
#first two terms are first and second
first=0
second=1
sum=0
count=1
print("Fibonacci Sequence: ")
# Count should not be more then n.
while(count<=n):    
  print(sum)
  count+=1
  first=second
  second=sum
  sum=first+second	

La salida del programa:

Enter the value of 'n': 10
Fibonacci Sequence:
0
1
1
2
3
5
8
13
21
34
$

secuencia de fibonacci python enfoque simple

Genere la secuencia de Fibonacci de forma recursiva

En este enfoque, llamaremos recursivamente a la función y calcularemos la secuencia de Fibonacci. Calcularemos la suma recursiva de los dos números anteriores (número-2) y (número-1).

#Program to generate Fibonacci sequence recursively 
def Fibonacci(Number):
    if(Number==0):
        return 0
    elif(Number==1):
        return 1
    else:
        return (Fibonacci(Number-2)+Fibonacci(Number-1)) #return the sum of two prevous terms
n=int(input("Enter the value of 'n': "))
print("Fibonacci Sequence:")
for n in range(0, n):
  print(Fibonacci(n))

La salida del programa anterior:

Enter the value of 'n': 10
Fibonacci Sequence: 
0 
1 
1 
2 
3 
5 
8 
13 
21 
34

secuencia de fibonacci - enfoque recursivo

Enfoque de programación dinámica

En este enfoque, almacenamos los valores anteriores y calculamos el valor actual. Estamos usando una lista para almacenar la serie de Fibonacci. Tanto el enfoque recursivo como el enfoque dinámico son iguales, pero la diferencia es que estamos almacenando el valor de n-1 y n-2 para cada valor entre 2 y n.

# Program to generate fibonacci sequence using dynamic programming approach
def fib_dp(num):
    arr=[0,1]
    print("Fibonacci Sequence: ")
    if num==1:
        print('0')
    elif num==2:
        print('[0,','1]')
    else:
        while(len(arr)<num):  #length of list should be less then num
            arr.append(0)
        if(num==0 or num==1):
            return 1
        else:
            arr[0]=0
            arr[1]=1
            for i in range(2,num):   
                arr[i]=arr[i-1]+arr[i-2]      #New term is equal to sum of two previous terms.
            print(arr)    
            return arr[num-2]
n=int(input("Enter the value of 'n': "))
fib_dp(n)

Salida del programa:

Enter the value of 'n': 13
Fibonacci Sequence: 
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144]

secuencia de fibonacci - enfoque dinámico

Conclusión

En este tutorial, aprendimos 3 enfoques para crear una secuencia de Fibonacci. En términos de complejidad del espacio, el primer enfoque es el mejor ya que no requerimos ningún espacio adicional relacionado con la estructura de datos.

Los otros dos enfoques requerirán el uso de estructuras de datos, en el tercer enfoque estamos usando la lista para almacenar toda la secuencia de Fibonacci.

En el segundo método, la recursividad usa una estructura de datos de pila para las llamadas de función. Los enfoques primero y tercero requerirán el mismo tiempo para ejecutar el programa.

Publicaciones relacionadas

Deja una respuesta

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

Botón volver arriba
Cerrar