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.