Fibonacci Recursivo

4 respostas
L

Olá pessoal, boa noite.
Gostaria de saber como eu faço esse algoritmo.
Implementar recursivamente o algoritmo que calcula os números da série de Fibonacci.

A série de Fibonacci é a seguinte:
0,1,1,2,3,5,8...
Para calculá-la, o primeiro e o segundo elementos valem 1(casos base), daí por diante, o n-ésimo elemento vale o (n-1)-ésimo elemento somado ao (n-2)-ésimo elemento.

Exemplo:
8 = 5 + 3
13 = 8 + 5

Definição: F(n)
0 ----- n ==0;
1 ----- n ==1;
F(n-1)+F(n-2) ---- n > 1;

Eu fiz assim:

public static void main(String args[]) {
        for (int i = 0; i <= 15; i++) {
            System.out.println("(" + i + ")" + Fibonacci(i));
        }
    }

    public static int Fibonacci(int n) {
        if (n == 0) {
            return 0;
        } else {
            if (n == 1) {
                return 1;
            } else {
                return Fibonacci(n - 1) + Fibonacci(n - 2);
            }
        }
    }

Será que está correto? Me ajudem por favor.

4 Respostas

RodrigoKaos

Blz, evita postar sua duvida de primeira, primeiro pesquisa. Essa duvida é bem simples e tem bastante post sobre isso alguns bem legais
[url]http://www.guj.com.br/search?cx=partner-pub-9448585618971060%3A4001950301&cof=FORID%3A10&ie=UTF-8&q=Fibonacci+recursivo&x=20&y=2&siteurl=www.guj.com.br%2Fjforum.java%3Fmodule%3Dsearch%26action%3Dsearch%26search_keywords%3Dfibonacci%2Brecursivo%26match_type%3Dall%26search_forum%3D4%26sort_by%3Drelevance&ref=&ss=3170j5265276j6[/url]

Esse em particular me ajudou bastante quando tava nesse exercicio:
[url]http://www.guj.com.br/java/108080-fibonacci---calculo-recursivo[/url]

Ta correto, vc poderia usar somente um if
if (n < 2) {   return n; }
public int fiboTeste(int n) {

	if (n < 2) { 
        return n;
        }
	return fiboTeste(n - 1) + fiboTeste(n - 2);
}
Outra coisa, vc não precisa declarar ifs dentros dos elses:
public static int Fibonacci(int n) {  
        if (n == 0) {  
            return 0;  
        } else {  
            if (n == 1) {  
                return 1;  
            } else {  
                return Fibonacci(n - 1) + Fibonacci(n - 2);  
            }  
        }  
    }
Seria assim:
public int fiboTeste(int n) {
		if (n == 0) {
			return 0;
		} else if (n == 1) {
			return 1;
		}
		return fiboTeste(n - 1) + fiboTeste(n - 2);
	}
ViniGodoy

Ou que tal nenhum if?

public int fiboTeste(int n) { return n &lt; 2 ? n : fiboTeste(n - 1) + fiboTeste(n - 2); }

L
RodrigoKaos:
Blz, evita postar sua duvida de primeira, primeiro pesquisa. Essa duvida é bem simples e tem bastante post sobre isso alguns bem legais [url]http://www.guj.com.br/search?cx=partner-pub-9448585618971060%3A4001950301&cof=FORID%3A10&ie=UTF-8&q=Fibonacci+recursivo&x=20&y=2&siteurl=www.guj.com.br%2Fjforum.java%3Fmodule%3Dsearch%26action%3Dsearch%26search_keywords%3Dfibonacci%2Brecursivo%26match_type%3Dall%26search_forum%3D4%26sort_by%3Drelevance&ref=&ss=3170j5265276j6[/url]

Esse em particular me ajudou bastante quando tava nesse exercicio:
[url]http://www.guj.com.br/java/108080-fibonacci---calculo-recursivo[/url]

Ta correto, vc poderia usar somente um if
if (n < 2) {   return n; }
public int fiboTeste(int n) {

	if (n < 2) { 
        return n;
        }
	return fiboTeste(n - 1) + fiboTeste(n - 2);
}
Outra coisa, vc não precisa declarar ifs dentros dos elses:
public static int Fibonacci(int n) {  
        if (n == 0) {  
            return 0;  
        } else {  
            if (n == 1) {  
                return 1;  
            } else {  
                return Fibonacci(n - 1) + Fibonacci(n - 2);  
            }  
        }  
    }
Seria assim:
public int fiboTeste(int n) {
		if (n == 0) {
			return 0;
		} else if (n == 1) {
			return 1;
		}
		return fiboTeste(n - 1) + fiboTeste(n - 2);
	}

Muito obrigado! Ajudou bastante. Pode deixar, irei pesquisar antes de postar.

L

ViniGodoy:
Ou que tal nenhum if?

public int fiboTeste(int n) { return n &lt; 2 ? n : fiboTeste(n - 1) + fiboTeste(n - 2); }

Muito obrigado! Fica até mais simples o código.

Criado 19 de maio de 2013
Ultima resposta 19 de mai. de 2013
Respostas 4
Participantes 3