Fibonacci! Não consigo fazer![RESOLVIDO]

9 respostas
raffamz

Galera,
Sou novo aqui, comecei a estudar java pela apostila da Caelum (FJ11), e me deparei com um exercício que tenho que imprimir a série de fibonacci de 1 à 100. Entendo a lógica do Fibonacci, mas estou apanhando na hora de colocar isso no código.

Alguém, por gentileza, pode me auxiliar?

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

Abraço

9 Respostas

Master.Abs

Quando eu fiz foi dessa forma, claro que há mais formas de se fazer mas creio que essa fica mais fácil de compreender como funciona o processo.
Qualquer dúvida é só falar.
Flw.

public class Fibonnacci {
	public static void main(String[] args) {
		int x = 12;
		int y = x+1;
		int sequencia[] = new int[y];
		sequencia[0] = 0;
		sequencia[1] = 1;
		System.out.print("Sequencia Fibonacci\n");
		System.out.format("{%d, %d,", sequencia[0], sequencia[1]);
		
		for (int i = 2; i < sequencia.length; i++) {
			sequencia[i] = sequencia[i - 1] + sequencia[i -2];
			
			if(i == sequencia.length -1)
				System.out.print(" " + sequencia[i]);
			else
				System.out.print(" " + sequencia[i] + ",");
		}
		
		System.out.print("...}");
	}
}
Master.Abs

Se preferir pode consultar aqui mesmo no forúm: fibonacci.

Alexandre_Saudate

Veja se ajuda:

public static void main(String[] args) {
		System.out.println(fibonacci(5));
		System.out.println(fibonacciFor(5));
	}
	
	
	
	public static int fibonacci (int fator) {
		if (fator == 0 || fator == 1) {
			return 1;
		}
		return fibonacci(fator - 1) + fibonacci(fator -2);
	}
	
	public static int fibonacciFor (int fator) {
		int resultado = 0;
		int tempUm = 1;
		int tempDois = 2;
		
		if (fator == 0 || fator == 1) {
			return 1;
		}
		for (int i = 2; i < fator; i++) {
			resultado = tempUm + tempDois;
			tempUm = tempDois;
			tempDois = resultado;
		}
		return resultado;
	}

[]'s

raffamz

Fala galera,

Obrigado pelas respostas, mas ainda não aprendi fazer com recursividade, existe algo mais fácil? Pois estou caminhando do início ainda…
Vlw pelo tempo!

Abraços

Alexandre_Saudate

raffamz:
Fala galera,

Obrigado pelas respostas, mas ainda não aprendi fazer com recursividade, existe algo mais fácil? Pois estou caminhando do início ainda…
Vlw pelo tempo!

Abraços

Eu postei dois exemplos, você não viu? Um recursivo e um usando for.

raffamz

asaudate,
Desculpe, é que como estou iniciando, no seu exemplo eu jo recursividade + for…existe um só com for?
É isso mesmo, ou estou me confundindo…mais uma vez, agradeço!

Stacker

Veja a minha implementação do Fibonacci na linguagem C, acredito que está com uma lógica bem simplificada, basta passar para a linguagem Java:

#include <stdio.h>
#include <stdlib.h>

int fib(int n)
{
    int i = 1;
    int j = 0;
    int t = 0;
    int k = 1;

    for(k = 1; k <= n; k++)
    {
        t = i + j;
        i = j;
        j = t;
        printf("%d\n", j);
    }

    return j;
}

int main()
{
    int n, resul;

    printf("Digite o n-esimo termo: ");
    scanf("%d", &n);

    resul = fib(n);

    return 0;
}
raffamz

Sim…entendi…galera…obrigado pela ajuda ae!
Abraços

Vingdel

raffamz, boa noite!

Se você não tem mais dúvida, por gentileza, edite o tópico e adicione [RESOLVIDO] ao início do assunto.

Obrigado e abraço!

Criado 20 de janeiro de 2012
Ultima resposta 20 de jan. de 2012
Respostas 9
Participantes 5