Ajuda em serie de Fibonacci

2 respostas
S

Olá, tenho o seguinte código abaixo para resolver a série de fibonacci um pouco mais complexa:

public static int f(int n) {
		if (n <= 3) {
			return n;
		} else if (n % 2 != 0) {
			return f(n - 1) + f(n - 2);
		} else {
			return f(n - 1) + (n - 2) + f(n - 3);
		}
}

Para f(40) está me retornando -[telefone removido], alguém poderia me auxiliar? Qual o problema? E como faço para resolver?
f(37) = 387420489
f(38) = 774840978
f(39) = [telefone removido]
f(40) = -[telefone removido]

2 Respostas

brenowbc

isso é simples kra, é porque você está usando int, e o comprimento ja ultrapassou o que int suporta,
tente usar um Long ao invés de int, e veja o resultado.
um abraço

denisspitfire
class teste {

    public static void main(String[]args) {
    	int a;
    	a = f(50);
    	System.out.println(a);
    }
    
    public static int f(int n) {
        if (n <= 3) {
            return n;
        } else if (n % 2 != 0) {
            return f(n - 1) + f(n - 2);
        } else {
            return f(n - 1) + (n - 2) + f(n - 3);
        }
}


}

Resultado : 183586786
??? Aqui funciona!
Mas caso precise de mais “espaço” na variavel… armazenar um numero maior por exemplo. Utilize tipos de dados maiores.
Ou… biginteger ( se nao me engano é assim ), para voce resolver problemas com numeração infinita… oque vai depender somente da memoria do seu pc.
Espero ter ajudado.
Flw

Criado 18 de julho de 2011
Ultima resposta 18 de jul. de 2011
Respostas 2
Participantes 3