Imprimindo a série de Fibonaci

2 respostas
H

Estou começando a estudar Java, e talvez muitos aqui também estejam.

Resolvi tentar explicar essa questão pois fiquei quebrando a cabeça por algum tempo, até que fizesse sentido para mim.

Então vamos lá:

Para saber qual o valor do 6º termo por exemplo, temos a seguinte equação:

6º Termo = 5º Termo + 4º Termo > infinitamente > 1000ºTermo = 999º Termo + 998º Termo

no caso:

6º Termo = (3 que é o 5º Termo) + (2 que é o 4º Termo)
6º Termo = 5

7º Termo = (5 que é o 6º Termo) + (3 que é o 5º Termo)
7º Termo = 8

Sequência de Fibonaci: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34…

Mas como transformar isso em linguagem de computador para que ele consiga reproduzir isso de forma automática sem a necessidade de inserir os termos?

A primeira coisa a fazer é imprimir os 2 primeiros termos, o e 1.

public class Exercícios1 {

	public static void main(String[] args) {

		int n1 = 1;
		int n2 = 0;
		
		System.out.println(n2);
		System.out.println(n1);

Com isso criamos 2 variáveis n1 e n2, serão o início da cadeia de números.

Sabendo os 2 primeiros números e a soma de ambos agora basta criar uma fórmula que replique isso, até o número do termo que desejarmos, por exemplo queremos saber o valor do 100º termo:

for (int n = 0; n <= 100; n = n + 1) {
			
			n1 = n1 + n2;
			n2 = n1 - n2;
			
			System.out.println(n1);
		}
	}
	
}

Aqui declaramos uma variável que vai se repetir por 100 vezes ou seja, até chegar no 100º elemento da nossa sequencia de Fibonaci.

Explicando:

Utilizando-se os 2 primeiros números que sabemos com certeza que são 0 e 1, temos:

n1 = n1 + n2;

n1= 1+0

<strong>n1</strong> = 1 > esse valor será impresso System.out.println(<strong>n1</strong>);

agora temos a continuação que será guardada para utilizar na próxima volta do loop for:

n2 = n1 - n2;

n2 = n1 (que  foi impresso acima e não mais o n1  do início) - n2 (acima pois ainda não foi modificado desde o início)

n2 = 1 - 0

n2 = 1 > esse valor não sera impresso e será apenas guardado na variável n2 para ser reutilizado no cálculo do n1

Seguindo para o próximo termo a ser impresso, já temos 0, 1, 1

n1 = n1 (impresso anteriormente) + n2 (guardado anteriormente)
n1 = 1 + 1 = 2 > esse valor será impresso, ou seja, faz parte da escala de Fibonaci: 0, 1, 1 e agora, 2

n2 = n1 (impresso acima) - n2 (guardado anteriormente)
n2 = 2 - 1
n2 = 1

Dessa forma o n1 é impresso e guardado para ser utilizado no cálculo do n2 que por sua vez ajuda no cálculo do n1.

Estou começando a estudar Java, então se não ficou claro ou se errei algum termo, me desculpem.

2 Respostas

rodevops

Sério, eu entendi tudo, isso significa que você entendeu o conceito, de verdade. parabéns!

Aproveitando… outro termo bem buscado aqui no fórum é sobre fatorial, poderia nos explicar esse também?

H

Boa noite rodevops, muito obrigado, fico feliz que tenha entendido.

Ainda não cheguei nesse tópico na apostila que estou estudando, assim que estudar isso, criarei o tópico.

Criado 15 de agosto de 2017
Ultima resposta 15 de ago. de 2017
Respostas 2
Participantes 2