Respostas
Resposta:
def fibonacci(posicao):
penultimo_numero = 1
ultimo_numero = 1
contador = 2
if (posicao == 1) or (posicao == 2):
resposta = 1
else:
while(posicao > contador):
resposta = ultimo_numero + penultimo_numero
penultimo_numero = ultimo_numero
ultimo_numero = resposta
contador += 1
return posicao, resposta
if(__name__ == '__main__'):
num, resultado = fibonacci(6)
print(f'A posição {num} de fibonacci é igual a {resultado}.')
Explicação:
1) Começamos criando a função com um parâmetro que é a posição:
def fibonacci(posicao):
2) Sabemos que temos que somar o último número com o penúltimo para obter o resultado do termo até chegar na posição desejada. Aqui definimos os valores iniciais para eles:
penultimo_numero = 1
ultimo_numero = 1
contador = 2
3) A primeira verificação que fazemos é checar se a posição escolhida é a 1 ou a 2, se for uma dessas posições, o resultado é 1:
if (posicao == 1) or (posicao == 2):
resposta = 1
4) Agora verificamos os casos diferentes da posição 1 e da posição e, neste caso, precisamos calcular o resultado até o valor definido no contador ser maior que a posição desejada. A nossa resposta passa a ser a soma do útimo número com o penúltimo, nosso penúltimo número passa a ser o último e o nosso último número passa a ser nossa resposta, o valor do contador é incrementado e novamente ocorre o loop para verificar se a posição é maior que o nosso contador, caso contrário, todo processo ocorre até que a condição seja atendida e o loop desfeito retornando o resultado.
else:
while(posicao > contador):
resposta = ultimo_numero + penultimo_numero
penultimo_numero = ultimo_numero
ultimo_numero = resposta
contador += 1
return posicao, resposta
5) Essa condição IF apresentada neste trecho, somente é útil para verificar se o arquivo que está sendo executado possuí a palavra reservada __main__, isso quer dizer que somente irá executar essa função se eu executar esse arquivo diretamente.
if(__name__ == '__main__'):
6) Pra finalizar criamos duas variáveis para receber o retorno da função separadamente para ficar mais simples de imprimir na tela posteriormente:
num, resultado = fibonacci(6)
print(f'A posição {num} de fibonacci é igual a {resultado}.')