martes, 3 de julio de 2018

Sucesión de Fibonacci programada en Python

Reto: Fibonacci

Dar los n primeros valores de la sucesión de Fibonacci.



La sucesión de Fibonacci es una famosa sucesión numérica que comienza con los números 0 y 1, luego los siguientes números se obtienen sumando los dos anteriores a él.

La serie se conoce como los números de Fibonacci y son los siguientes.

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, ... ... ...

Observe que 8 es la suma de los dos previos 3+5 y así se forman todos ellos. Por eso es necesario establecer los dos primeros. En muchas de las referencias que se pueden encontrar también se la denomina serie de Fibonacci.

Consideramos que los dos primeros elementos de la sucesión de Fibonacci son 0 y 1. En otras referencias consultadas se puede ver que los primeros elementos se considera que son 1 y 1. Esto no altera al resto de los elementos que se van obteniendo ya que la sucesión de Fibonacci se forma dando los dos primeros elementos y luego para obtener los restantes lo que se hace es sumar los dos previos.



Método 1

Solicitamos al usuario que nos de el número de elementos de la sucesión que desea generar. Establecemos en 5 el número mínimo de elementos a mostrar. Usamos la función max para que si el usuario nos proporciona un número menor a 5, se establezca n igual a 5.

n = max(int(input('¿Cuántos valores quieres? (minimo 5): ')), 5)
a = 0
b = 1
print(a)
print(b)
for i in range(0, n-2):
    aux = a + b   # usamos una variable auxiliar para obtener el siguiente valor de la serie
    print(aux)
    a = b
    b = aux

Método 2

Con una estructura while True solicitamos el valor de n que se continuará preguntando hasta que el usuario introduzca un valor mayor que dos.
Trabajamos con listas donde los dos primeros elementos vienen dados y son 0 y 1. El resto se generan sumando los dos previos y se añaden a la lista con append.

while True:
    n=int(input('¿Cuántos valores quieres? (mínimo 3): '))
    if n > 2:
        break
x = [0,1]
for i in range(n-2):
    x.append(x[-1] + x[-2])
print(x)


Método 3

Trabajamos con una lista que inicializamos con los dos primeros valores 0 y 1. Nos metemos en un bucle for dentro del cual usamos append para ir añadiendo elementos nuevos a la sucesión de Fibonacci.


lista = [0, 1]
for i in range(3, 21):
    lista.append(lista[len(lista)-1] + lista[len(lista)-2])
print(lista)


Método 4

Trabajamos con una función dentro de la cual inicializamos las variables a y b con los valores 0 y 1 respectivamente. Nos metemos en un bucle for donde creamos una tercera variable auxiliar c que será la suma de a+b.


def fibo(n):
    a, b = 0, 1
    for i in range(3, n+1):
        c = a + b
        a = b
        b = c
    return(c)
print(fibo(100))


Método 5

Trabajamos con una lista llamada fibo que vamos alimentando con append a cada ciclo de bucle for.


n = 20    # número de términos de la serie
fibo = [0, 1]
for i in range (n-2):
    fibo.append(fibo[-1] + fibo[-2])
print(fibo)


Método 6

Creamos una función a la que pasamos el parámetro n que nos indica el número de elementos de la sucesión de Fibonacci que deseamos. Dentro de la función definimos las variables a y b con los valores 0 y 1 respectivamente. Nos metemos en un bucle for que recorrerá los elementos que vamos a generar. Se imprime el valor de a y se deja un espacio vacío, evitando el retorno de carro. Asignamos a la variable a el valor de b, y a la b el valor de a+b. La última línea de código dentro de la función es un print() que equivale a un retorno de carro, pero permite imprimir el resultado.


def fibo(n):
    a, b = 0, 1
    for i in range(n):
        print(a, end=' ')
        a, b = b, a+b
    print()
fibo(20)


Método 7

Si te has preguntado cómo conseguir la sucesión de Fibonacci sin usar una variable auxiliar aquí tienes la solución.
Con este método evitamos tener que utilizar una variable auxiliar.


n = 20
a, b = 0, 1
print("1:", a)
print("2:", b)

for i in range(3, n+1):
    b = a + b
    a = b - a  # así evitamos emplear una variable auxiliar
    print(f"{i}: {b}")

5 comentarios:

  1. Escribir un programa completo en Python que haga lo siguiente:Solicitarle al usuario un numero N. Y con este realizar un programaque cree una variable de tipo LISTAcon los N primeros números de la serie de Fibonacci.Al Final debera Sumar estos numeros, promediarlos y encontrar la mediana.

    ResponderEliminar
    Respuestas
    1. Te refieres a esto?

      ent,a=int(input()),[0,1]
      for i in range(ent):a+=[sum(a[-2:])]
      print(sum(a),sum(a)/len(a),sorted(a)[ent//2])

      Eliminar
  2. Su algoritmo lee un número N entre 2 y 8 ingresado por el usuario. Luego genera la lista de
    números Fibonnacci, hasta encontrar el primer número fibonnacci que tiene exactamente N digitos.
    Imprima cuantos fibonnacci hay en total hasta llegar a él.
    b) Extienda el programa del literal (a) para calcular la suma de todos aquellos fibonacci que tienen el
    último dígito de su cédula o # de documento en alguna posición (cualquiera que sea) .
    Restricciones: Puede usar la funcion de append, len() y conversion de tipos entre string y numéricos.

    ResponderEliminar
  3. Print(serie fibonnaci")
    Elementos=int(imput(ingresé números de elementos a mostrar"))
    a=1
    b=1
    Ford i in Range (0 elementos):
    C=a+b
    Print(a"+b=c)
    a=b
    B=c

    ResponderEliminar