Fibonacci recursivo usando arrays

Boa tarde pessoal, estou com uma duvida neste exercício aqui.
5.7 - Desafios

  1. 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)
    Eu consegui fazer o problema de Fibonacci de forma recursiva sem o uso de arrays, agora, com o mesmo tah dificio. confesso que não peguei legal sobre “Arrays”.
    Poderiam me ajudar? Meu código[code]class Fibonacci{

    int var1;
    int var2;
    int var3;

    void calculaFibonacci(int var, int i){

     if(i == 0){
         var1 = 0;
         System.out.println(var1);
     }
     if(i == 1){
         var2 = 1;
         System.out.println(var2);
     }
     if(i > 1){
         var3 = (var1 + var2);
         var1 = var2;
         var2 = var3;
         System.out.println(var3);
     }
     if(i <= var){
         calculaFibonacci(var, ++i);
     }
    

    }
    }
    class TestaFibonacci{

    public static void main(String [] args){

     Fibonacci fibo = new Fibonacci();
    
     fibo.calculaFibonacci(5,0);
    
     System.out.println(fibo.var3);
    

    }
    }[/code]
    Obrigado a todos.

[code] public static void calculaFibonacci(List fib, int num) {
if (num > 0) {
if (fib.size() == 0) {
fib.add(0);
} else if (fib.size() == 1) {
fib.add(1);
} else {
fib.add(fib.get(fib.size() - 2) + fib.get(fib.size() - 1));
}
calculaFibonacci(fib, --num);
}
}

public static void main (String[] args) {
	List<Integer> fib = new ArrayList<Integer>();
	calculaFibonacci(fib, 6);
	System.out.println(fib);
}

[/code]

passa pra array…

Se todo estudante em seus trabalhos viesse ao guj, e o povo desse de mão beijada, pq estudar então.
pense nisso!

[quote=victor.hugooooo][code] public static void calculaFibonacci(List fib, int num) {
if (num > 0) {
if (fib.size() == 0) {
fib.add(0);
} else if (fib.size() == 1) {
fib.add(1);
} else {
fib.add(fib.get(fib.size() - 2) + fib.get(fib.size() - 1));
}
calculaFibonacci(fib, --num);
}
}

public static void main (String[] args) {
	List<Integer> fib = new ArrayList<Integer>();
	calculaFibonacci(fib, 6);
	System.out.println(fib);
}

[/code]

passa pra array…[/quote]Valeu amigo, vou tentar aqui! Abraços…

[quote=yoshikichi]
Se todo estudante em seus trabalhos viesse ao guj, e o povo desse de mão beijada, pq estudar então.
pense nisso!
http://pt.wikipedia.org/wiki/Número_de_Fibonacci[/quote]
Obrigado Yoshikichi, sua resposta foi de grande ajuda! rs

public class FibonacciArrays {
public static void main(String[] args) {
long[] l = new long[10];

	for (int i = 0; i < l.length; i++) {
		if (i == 0) {
			l[i] = 0;
		}
		if (i > 0 && i <= 2) {
			l[i] = 1;
		}
		if (i > 2) {
			l[i] = l[i - 1] + l[i - 2];
		}
		System.out.println(l[i]);
	}
}

}