Imprimindo a série de Fibonaci

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
n1 = 1 > esse valor será impresso System.out.println(n1);

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

n2 = n1 - n2;
n2 = n1 (que já foi impresso acima e não mais o n1 lá 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.

1 curtida

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?

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.