É um exercício resolvido de nossa lista de questões de funções.
Leia também:
- Certificado do Curso de Python (para quem deseja trabalhar como programador)
- Conteúdo do Python Progressivo em PDF
Gerando a Sequência de Fibonacci em Python
Vamos criar uma função chamada fibo( n ) que tem o parâmetro n.
O argumento que você deve passar para esta função é um inteiro positivo, maior ou igual a 2.
Como a série de Fibonacci é formada somando seus dois termos anteriores, sua fórmula geral é:
fibo(n) = fibo(n-1) + fibo(n-2)
Mas como toda boa função que usa recursividade, ele tem que ter um stop, pois uma hora ela vai ter que parar. Fazemos isso usando testes condicionais IF.
No nosso caso, vai ter dois stops.
Se o valor de n for igual 1, vamos retornar 0 (pois o primeiro termo é 0).
Se o valor de n for igual 2, vamos retornar 1 (pois o segundo termo é 1).
Pronto, para valores maiores que 2, basta somarmos os dois termos anteriores.
Agora vamos montar nossa função menu().
Ela pede o termo n ao usuário, que deve ser inteiro e maior que 2.
Agora ela deve imprimir na tela os valores de fibo(1), fibo(2), fibo(3)....até fibo(n).
Lembre-se, nossa função mostra o n-ésimo termo!
Então temos que imprimir todos, de 1 até n.
Fazemos isso usando um laço for, que vai de 1 até n (função range).
E prontinho, vai exibir cada termo da sequência de Fibonacci, um por linha!
Danada essa função recursiva, não?
Código Python
Nosso código ficou assim:def fibo(n): if n==1: return 0 elif n==2: return 1 else: return fibo(n-1) + fibo(n-2) def menu(): n = int(input('Exibir ate o termo (maior que 2): ')) for val in range(1,n+1): print(fibo(val)) while True: menu()
O que seria esse menu e qual é o argumento dela?
ResponderExcluirÉ o nome da função que o autor escolheu.
ExcluirVocê pode usar qualquer nome, desde que não seja uma "Keyword".
Para ver a lista de keywords:
>>> import keyword
>>> print(keyword.kwlist)
Eu pessoalmente não usaria "menu" na solução acima, mas sim algo como:
input_usuario
ou
entrada_usuario
ou
informe_valor_n
A desvantagem é que são nomes grandes, mas ficam mais fáceis de entender (quando se está aprendendo, informações muito concisas podem confundir ao invés de ajudar).
n = 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')
queria saber como fazer essa mesma função só usando if/else, sem usar for e while e sem importar módulo...
ResponderExcluireu tambem
Excluir