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
¿Cuántos valores quieres? (minimo 5): 20 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181
while True
solicitamos el valor de n, que se continuará preguntando hasta que el usuario introduzca un valor mayor que dos.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)
¿Cuántos valores quieres? (mínimo 3): 20 [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181]
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)
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181]
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))
218922995834555169026
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)
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181]
for
que recorrerá los elementos que vamos a generar.`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)
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181
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}")
1: 0 2: 1 3: 1 4: 2 5: 3 6: 5 7: 8 8: 13 9: 21 10: 34 11: 55 12: 89 13: 144 14: 233 15: 377 16: 610 17: 987 18: 1597 19: 2584 20: 4181
def fibo(n):
if n <= 1: # condición de parada o "caso base"
return n
else:
return(fibo(n-1) + fibo(n-2)) # "caso recursivo"
n = 20
for i in range(n): # i va de 0 a n-1
print(f"{i+1} → {fibo(i)}")
1 → 0 2 → 1 3 → 1 4 → 2 5 → 3 6 → 5 7 → 8 8 → 13 9 → 21 10 → 34 11 → 55 12 → 89 13 → 144 14 → 233 15 → 377 16 → 610 17 → 987 18 → 1597 19 → 2584 20 → 4181
def fibo(n):
if n in {0, 1}:
return n
return fibo(n-1) + fibo(n-2)
n = 19
[fibo(i) for i in range(n)]
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584]
Elegancia con un while
.
a, b = 0, 1
while a < 100:
print(a)
a, b = b, a+b
0 1 1 2 3 5 8 13 21 34 55 89