Bom eu estou começando a aprender java e ate agora tava tudo beleza mais me deparei com o seguinte exercicio:
1)Um método pode chamar ele mesmo. Chamamos isso de recursão.
Você pode resolver a série de fibonacci usando um método que chama ele mesmo.
O objetivo é você criar uma classe, que possa ser usada da
seguinte maneira:
Fibonacci fibo = new Fibonacci();
int i = fibo.calculaFibonacci(6);
System.out.println(i);
Aqui imprimirá 8, já que este é o sexto número da série.
Este método calculaFibonacci não pode ter nenhum laço, só pode chamar ele mesmo como método. Pense
nele como uma função, que usa a própria função para calcular o resultado.
Depois eu tentei fazer esse tal de método recursivo mais nao dava certo entao procurei uma solução na net
e encontrei o seguinte codigo:
class Fibonacci {
int calculaFibonacci( int n ){
if (n <= 2){
return 1;
}
return calculaFibonacci (n-1) + calculaFibonacci (n-2);
}
}
Ele Funcionou corretamente mas eu nao entendi algumas coisas:
1)Poruqe se eu retirar o
if (n <= 2){
return 1;
}
do codigo ele nao funciona?
da o seguinte erro (repetindo varias vezes no pronpt
at Fibonacci.calculaFibonacci(Fibonacci.java:4)
at Fibonacci.calculaFibonacci(Fibonacci.java:4)
2)O Modo como ele calcula o fibonacci eu nao entendi eu achei mais pratico usar este mostrado acima do que usar o que eu fiz
em um exercicio anterior Abaixo:
class Fibonacci {
public static void main(String[] args) {
for(long a = 0, b = 1; a <= 144;) {
System.out.print(a + ", " + b + ", ");
a += b;
b += a;
}
}
}
3)No Codigo Abaixo:
class Fibonacci {
int calculaFibonacci( int n ){
if (n <= 2){
return 1;
}
return calculaFibonacci (n-1) + calculaFibonacci (n-2);
}
}
Nao era pra entrar em um loop infinito?
pois nao vejo o trecho que diz para parar
Bom acho que é isso agradeço desde ja