Por que quando ensinam recursividade demonstram-na calculando fibonacci? Alias, qual uso prático de recursividade que apresenta bom desempenho?
Explico, quando aprendi recursividade, me mostraram através do Fibonacci, então eu testei e vi que era muito lerdo este método. Criei um algoritmo bobo rapidamente e teste-o também, e seu desempenho foi absurdamente superior em relação a recursividade. Então penso, em que patavinas recursividade se torna a melhor forma?
Code:
public class Fibonacci {
long fibo = 0, n = 1, aux = 0;
//Minha Solução, posso tanto mostrar o resultado até o número n, quanto mostrar só o número n.
//sendo mais rápida que a solução recursiva.
//Este construtor é o do meu algoritmo, veja que o número do laço (69) é maior do que o número do laço recursivo.
Fibonacci() {
for (int i = 0; i < 69; i++) {
fibo = n + aux;
aux = n;
n = fibo;
//print();Aqui, mostro um por um
}
print();
}
Fibonacci(int n){
}
public long fibo(int n) {
if (n < 2) {
return n;
} else {
return fibo(n - 1) + fibo(n - 2);
}
}
public void print() {
System.out.println(fibo);
}
public static void main(String args[]) {
Fibonacci fb = new Fibonacci(0);
//teste minha primeira ideia.
long antes = System.currentTimeMillis();
new Fibonacci();
long depois = System.currentTimeMillis() - antes;
System.out.println("O tempo levado pelo meu método é: "+depois);
/*for (int i = 0; i < 30; i++) {
System.out.print("(" + i + "):" + fb.fibo(i) + "\n");Aqui, mostram um por um.
}
*/
//teste recursivo.
antes = System.currentTimeMillis();
System.out.println(fb.fibo(45));
depois = System.currentTimeMillis() - antes;
System.out.println("O tempo levado pelo método recursivo encontrado por aí é: "+depois);
}
}
Enfim, mudando lá o 69 por 44, ou seja, descobrindo até a 45ª posição dos números, podemos comparar o tempo levado por um meio e pelo outro pra encontrar o mesmo número. Eu coloquei o 69, pra mostrar que, mesmo a posição do número fibonacci estando bem maior no meu algoritmo em relação a posição da recursividade, ainda assim o meu método é muito superior...
Não liguem pra bagunça dos métodos, fiz rapido há um tempo atras e não mexi mais nele desde então.