Informática, perguntado por Alissonsk, 1 ano atrás

Faça um programa que imprima a sequência de Fibonacci. Ou seja, 011235813...

Soluções para a tarefa

Respondido por LucasStorck
3

Boa noite!!

Existe duas maneiras de fazer esse programa, um utilizando recursos básicos de C, como um for e algumas variáveis auxiliares e outro utilizando a Recursividade (feita com funções). Apresentarei as duas soluções em anexo.

Primeira solução: Definindo que 1º termo da sequência começa em 1, pedimos que o usuário entre com o n-ésimo termo utilizamos esse termo como limite para nosso for (no programa a variável t representa o n-ésimo termo). Dentro do for calcula-se a soma do anterior (defino como 0) e do próximo termo (definido como 1). Obtendo a soma a variável anterior recebe o termo "próximo" e o termo próximo recebe o valor atual da soma e isso acontece n vezes (ou t vezes). Há também a impressão de cada termo calculado (utiliza-se a variável anterior para printar ao invés de soma pois fizemos as trocas delas, explicado acima).

Segunda solução (mais bonita e prática): Nesta solução iremos utilizar a Recursividade. Nela iremos criar uma função que calcula os termos de Fibonacci. Iremos digitar o n-ésimo termo e para printar todos os termos, iremos utilizar o recurso de for novamente, onde dentro do for chamamos a função fib. Na função fib tentamos calcular o t-ésimo termo, porém não temos todos os termos anterior como t-1, t-2,..., t-(t+1) que é necessário para calcular t-ésimo. Assim chamamos a função novamente para x = x-1, e novamente não temos x-2, chamamos a função novamente até cairmos na condição em que x == 1 (onde definido no if sabemos o valor de t=1 e t=2). Logo a partir disso, é calculado termo a termo e devolvido para função main e impressa para o usuário.

OBS: Para não confundir, t e x são os mesmos números, porém em variáveis diferentes. A função fib recebe uma cópia de t (quando chamamos ela) e armazena na variável x.

Qualquer dúvida, entre em contato. Bons estudos!

Anexos:

Alissonsk: Show de bola!!
LucasStorck: =)
Perguntas interessantes