[quote=DavidUser]queria que inserissem as resoluções dos desafios da apostila.
exemplo: fiz o desafio do início da apostila pag. 58 nº 1,
[quote]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(5);
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.
2) Por que o modo acima é extremamente mais lento para calcular a série do que o modo iterativo (que se usa
um laço)?
3) Escreva o método recursivo novamente, usando apenas uma linha. Para isso, pesquise sobre o operador
condicional ternário. (ternary operator)[/quote]
bem resolvi sem utilizar laços mas acho q não era assim q era pra resolver:
class FibonaciProgram{//1,1,2,3,5,8,13,21,...
int i=2;
public static void main(String[]args){
FibonaciProgram fibo=new FibonaciProgram();
fibo.calculaFibonacci(1,1,5);
}
void calculaFibonacci(int y,int x,int limite){
y=y+x;
++i;
if (i==limite)System.out.println(y+x);
x=y+x;
++i;
if (i==limite)System.out.println(y+x);
if(i<limite)calculaFibonacci(y,x,limite);
}
}
[/quote]
Realmente não era pra escrever assim.
Fibonacci de 0 e de 1 são sempre 1.
Fibonacci de n é a soma do fibonacci de n-1 com o fibonacci de n-2.
Pegue essas duas coisas que disse acima e faça uma função. Só lembre que vc tem que retornar um número, e não ficar escrevendo na tela.