Oi, boa noite …
Eu resolvi este exercício da apostila da Caelum:
- No capítulo anterior, você deve ter reparado que a versão recursiva para o problema de Fibonacci é lenta
porque toda hora estamos recalculando valores. Faça com que a versão recursiva seja tão boa quanto a
versão iterativa. (Dica: use arrays para isso)
página 56
Ficou desta forma:
Fibonacci.java
public class Fibonacci
{
int[] array = new int[2000];
int fibonacci = 50;
int calculaFibonacci()
{
--this.fibonacci;
int loop = 0;
if (this.fibonacci >= 0)
{
for(loop = 0 ; loop <= this.fibonacci ; loop++)
{
if(loop == 0)
{
this.array[loop] = 1;
}else if(loop == 1)
{
this.array[loop] = 1;
}else
{
this.array[loop] = this.array[loop-1] + this.array[loop-2];
}
}
}
return this.array[--loop];
}
}
e o Teste … FibonacciTeste.java
public class TesteFibonacci
{
public static void main(String[] args)
{
Fibonacci xicara = new Fibonacci();
int valor = xicara.calculaFibonacci();
System.out.println("Tcharam: " + valor);
}
}
Porém estou achando que gastei muitas linhas, como vcs fariam ? deem uma opiniao, por favor…