Fibonacci recursivo usando arrays

4 respostas
G
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
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);
    }
}
Obrigado a todos.

4 Respostas

victor.hugooooo
public static void calculaFibonacci(List<Integer> 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);
	}

passa pra array...

yoshikichi

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

G
victor.hugooooo:
public static void calculaFibonacci(List<Integer> 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);
	}

passa pra array...

Valeu amigo, vou tentar aqui! Abraços...
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%C3%BAmero_de_Fibonacci

Obrigado Yoshikichi, sua resposta foi de grande ajuda! rs

domingosthiago
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]);
	}
}

}

Criado 21 de março de 2011
Ultima resposta 6 de out. de 2012
Respostas 4
Participantes 4