Série de Fibonacci na Matemática
A série de Fibonacci nada mais é que uma sequência de números inteiros, formada por uma regrinha bem simples e fácil, algo aparentemente 'bobo', mas com um impacto e importância brutal na natureza.A regra é a seguinte:
- O primeiro número da série é 1
- O segundo número da série é 1 também
- O próximo número da série é sempre a soma dos dois anteriores
Vamos chamar de a1, a2, a3, ...., os termos da sequência de Fibonacci, eles são o seguinte:
a1 = 1
a2 = 1
a3 = a2 + a1 = 1 + 1 = 2
a4 = a3 + a2 = 2 + 1 = 3
a5 = a4 + a3 = 3 + 2 = 5
a6 = a5 + a4 = 5 + 3 = 8
a7 = a6 + a5 = 8 + 5 = 13
a8 = a7 + a6 = 13 + 8 = 21
a9 = a8 + a7 = 21 + 13 = 34
...
E por aí vai, ela é uma sequência infinita.
A Sequência de Fibonacci na Natureza
A parte mais interessante da sequência de Fibonacci, é sua aplicação e uso em nosso dia a dia, bem como sua presença na natureza.Na Matemática, se usa para achar o MDC (máximo divisor comum) de dois números inteiros.
Pode ser usado na conversão de milhas para KM.
Há estudos e usos de Fibonacci na música (afinar instrumentos).
O animal Nautilus possui uma espiral em sua concha, formada por proporções de números da série de Fibonacci.
Nossos dentes, por exemplo, possuem larguras cuja proporcionalidade entre si obedece aos números da sequência.
As folhas da Bromélia são formadas por espirais, cujos raios pertencem a série.
É uma sequência tão importante, tão misteriosa e presente que tem gente que até estudar os números de Fibonacci para tentar ganhar na Mega Sena.
Calcular Elementos de Fibonacci em Python
Ok! Já vimos o que são os números de Fibonacci, agora vamos aprender a achar eles usando apenas programação em Python.Vamos resolver uma questão de nossa Lista de Exercícios de Laços:
A série de Fibonacci é formada pela seqüência 1,1,2,3,5,8,13,21,34,55,... Faça um programa capaz de gerar a série até o n−ésimo termo.
Lógica da Programação Python
Antes de nossa lógica funcionar no código, ela precisa funcionar em nossa cabeça. Esse é o grande segredo de todo bom programador: a coisa precisa funcionar na sua mente antes de você começar a codar, ok?Vamos chamar de n a variável que representa o n-ésimo termo da série, termo que o usuário vai fornecer.
Como temos sempre que somar os dois elementos anteriores, as variáveis para representar eles terão os nomes ultimo e penultimo. O n-ésimo termo vai ser armazenado na variável termo.
Agora vamos, com calma, te ensinar o pulo do gato.
Vamos pegar um situação que temos a seguinte configuração:
ultimo = 5
penultimo = 3
Logo, o próximo termo é:
termo = ultimo + penultimo = 8
Depois, na nova iteração do laço, nossos novos valores de ultimo e penultimo devem variar, ir pra frente na sequência de Fibonacci. Devem ser agora:
ultimo = 8
penultimo = 5
Ou seja, o novo valor de penultimo deve ser o valor antigo de ultimo:
penultimo = ultimo
E o novo valor de ultimo deve ser o próximo termo da sequência.
E como calculamos o próximo valor da sequência? Somando os dois valores anteriores, que é o valor antigo de ultimo com penultimo.
O novo valor de ultimo fica:
ultimo = ultimo + penultimo
Ou simplesmente:
ultimo = termo
Exercício resolvido com laço WHILE
Lembrando que se o usuário pedir o termo de número 1 ou 2, devemos retornar 1. Checamos isso com um IF retornando 1 caso o usuário digite 1 ou 2.Só daí em diante que aplicamos a regrinha da soma dos valores anteriores, aí cai no ELSE, onde iremos fazer o código explicado pela lógica anterior.
A variável que vai ficar responsável pela contagem de iterações é a count.
Ela se inicia valendo 3, pois já temos os dois valores iniciais da sequência (1 e 1) e vamos calcular em seguida o terceiro termo.
Quando o laço WHILE acaba, damos o print da variável termo.
(tudo ainda dentro do ELSE)
Nosso código fica assim:
n = int(input("Que termo deseja encontrar: ")) ultimo=1 penultimo=1 if (n==1) or (n==2): print("1") else: count=3 while count <= n: termo = ultimo + penultimo penultimo = ultimo ultimo = termo count += 1 print(termo)
Exercício resolvido com laço FOR
n = int(input("Que termo deseja encontrar: "))
ultimo=1
penultimo=1
if (n==1) or (n==2):
print("1")
else:
for count in range(2,n):
termo = ultimo + penultimo
penultimo = ultimo
ultimo = termo
count += 1
print(termo)
PS: algumas fontes definem como 0 o primeiro termo, 1 o segundo termo e do terceiro em diante é a soma dos dois termos anteriores, que é uma definição diferente dos dados da questão. No fim das contas, isso não importa muito, pois a lógica é a mesma, só precisa de alguns pequenos ajustes.
Muito Obrigado, a demonstração me ajudou.
ResponderExcluirmt bom
ResponderExcluirn = int(input('Inserir numero para gerar a sequência de Fibonnaci :'))
ResponderExcluiru_1 = 1
u_2 = 1
count = 0
lista = [0,1,1]
for vic in range(0, n):
count = u_1 + u_2
u_1 = count
u_2 = (count - u_2)
lista.append(count)
print(lista)
Opa! Bão? Então, fiz umas pequenas mudanças em seu codigo. Veja se gostou:
Excluirn = int(input('Inserir numero para gerar a sequência de Fibonnaci: '))
u_1 = 1
u_2 = 1
count = 0
lista = [1, 1]
for vic in range(n):
count = u_1 + u_2
u_1 = count
u_2 = (count - u_2)
lista.append(count)
print(lista)
cara valeu, eu tava resolvendo uns problemas e nao tava saindo desse obstaculo, aprendi muito com esse seu código!
ResponderExcluirprazer, Marcos!
eu realizei o comando de uma forma diferente utilizando o laço for e deu certo
ResponderExcluirn = int(input('Digite o a quantidade de termos da série de Fibonacci: '))
a = 0
b = 1
f = 0
print(a)
for i in range(n-1):
if (i%2)==0:
a = f
if (i%2)==1:
b = f
f = a + b
print(f)
muito bom mesmo , parabens! totalmente intuitivo
ResponderExcluirajudou muito, ainda to aprendendo!
ResponderExcluirn = int(input('A sequência de Fibonacci de: '))
ResponderExcluira, b = 0, 1
while a < n:
print(a, end=', ')
a, b = b, a+b
print('FIM')
Esse código é bem legal, mas veja que quando colocamos um número n, ele não mostra o n - ésimo termo, ele mostra a sequência até um valor menor ou igual a n.
Excluirtermos = int(input('Digite o número de termos Fibonatti: '))
ResponderExcluiranterior, proximo = 1, 1
temp = 0
for i in range(termos):
print(anterior, end=', ')
temp = anterior
anterior = proximo
proximo = temp + anterior
print('Fim')
t = int(input('Digite até onde ira o Fibonacci: '))
ResponderExcluirn=0
while n < t:
FN = ( pow((1+pow(5,1/2))/2,n) - pow((1-pow(5,1/2))/2,n) ) / (pow(5,1/2))
n = n+1
print('{:.0f}'.format(FN))
def Fib(n):
ResponderExcluirfor i in range(n):
if (n <=1):
return n
return (Fib(n - 2) + Fib(n - 1))
# A série de Fibonacci é formada pela seqüência 1,1,2,3,5,8,13,21,34,55,...
ResponderExcluir# Faça um programa capaz de gerar a série até o n−ésimo termo.
n = int(input("Digite o n−ésimo termo da serie "))
cont = 0
inicial = 0
final = 1
primeiro = 0
num = 0
print(inicial)
print(final)
while cont <= n - 1:
inicial = final + inicial
print(inicial)
final = inicial + final
print(final)
cont += 1
print("Fim")
valor_ant = 0
ResponderExcluirvalor_atu = 1
n = int(input("Digite o tamanho da sequência: "))
for valor in range (n):
if valor == 0:
print(valor_ant, end = " ")
if valor == 1:
print(valor_atu, end = " ")
elif valor > 1:
valor_pos = valor_ant + valor_atu
print(valor_pos, end = " ")
valor_ant = valor_atu
valor_atu = valor_pos
ultimo = 1
ResponderExcluirpenultimo = 1
n = int(input('Insira o número: '))
if (n == 1):
print('1')
elif n == 2:
print('1, 1')
else:
cont = 3
print('1, 1', end=', ')
while cont <= n:
proximo = ultimo + penultimo
penultimo = ultimo
ultimo = proximo
cont += 1
print(proximo, end=', ')
Esse aqui mostra desde o primeiro termo até o n - ésimo, usando apenas o while.
mas se o n = 3 não vai dar erro como ficará no while count != n vai saltar para print termo que nem temos ?
ResponderExcluir#SÉRIE DE FRIBONACCI
ResponderExcluira,b = 1, 1
while a < 500:
print(a)
a, b = b, a+b
Há outra forma simples de calcular
ResponderExcluirdef calc(n):
if n <= 1:
return n
else:
return calc(n-1) + calc(n-2)
print(calc(3))
Opa irmão, boa noite. seu código só não imprime os dois primeiros termos (1,1) da sequência, né? Só imprime a partir do terceiro termo.
ResponderExcluir