Qual o melhor algoritmo para a sequencia fibonacci?

tu que ja fiz é algo a


public class fibonacci 
{
    public static void main(String[] args) {
       System.out.print("0, 1");

          int fib = 0, fib1 = 1, fib2 = 1;
   while (fib2 < 1000) 
   {   if(fib2<100){
       System.out.print(", " + fib2);
       fib = fib1;
       fib1 = fib2;
       fib2 = fib1 + fib;}
   }
   // if(fib2<100)
   System.out.print(", " + fib2);
}
}

tem uma forma só com duas variáveis

[quote]desde já valeu. Valeu !!!

e aí abymaelll, blz !!!
Melhor algoritmo é aquele que realiza a sua tarefa em menos tempo e processamento da máquina, para se chegar nesse ponto é necessário ir aprimorando um algoritmo já existente, diminuindo o número de variáveis, testes mais precisos, entre outras coisas…, e quanto ao fibonacci este que vc desenvolveu é o mais tradicional, tem outras opções, como usar um Array, recursão etc, etc…, para alterar este usando duas variáveis, vc deverá fazer duas contas dentro do laço:

[code]fib = 0, fib1 = 1;

fib = fib + fib1;
fib1= fib1 + fib;
[/code]
Cada soma será responsável pelo próximo valor da série, … ok ???
abraço

Tem sim, mas não é fácil de ler.

[code]public class Foo {

public static void main( String[] args ) {
    fibonacci( 10 );
}

public static void fibonacci( int quantidade ) {

    int n1 = 0;
    int n2 = 1;

    for ( int i = 0; i < quantidade; i++ ) {
        System.out.println( n1 );
        n2 = n1 + n2 + ( n1 = n2 ) - n2;
    }

}

}[/code]

A cada iteração: n2 recebe a soma de n1 e n2, mas também é feita a atribuição de n2 à n1, que será somada ao resultado. Então para tirar essa soma a mais, subtrai-se n2, que é o valor que n1 vai ter naquele ponto do código.

[]'s

Dá para enxugar ainda mais o cálculo:

n2 += n1 + ( n1 = n2 ) - n2;

Ah, respondendo à sua pergunta do melhor algoritmo, você precisa definir o que é ser melhor.
Eu normalmente acho que o melhor algoritmo é aquele que você entende facilmente e que principalmente outras pessoas leiam e entendam. O que não é caso do que eu mostrei :slight_smile:

[]'s

Ah, outra coisa. ironmarq, seu código está “errado”, pois hora o termo da sequencia está em n1, hora está em n2.

[]'s

[quote]Ah, outra coisa. ironmarq, seu código está “errado”, pois hora o termo da sequencia está em n1, hora está em n2.

[]'s[/quote]

Eu expliquei mal o código, eu vi a dúvida no fórum e rabisquei rapidinho aqui numa folha e postei, hora o termo está em “fib”, hora em “fib1”, não ficou tão bom quanto o seu rsrs, mas implementei aqui e funcionou legalzinho. Valeu David.

Hehe sem problema :wink:

[]'s

Um exemplo com uma variável:

Mas eu faço a mesma pergunta que o o autor :smiley:

[]'s

[quote]Um exemplo com uma variável:

Mas eu faço a mesma pergunta que o o autor

[]'s[/quote]
Interessante, rsrs, o cara usou deslocamento de bit’s, notação hexadecimal, melhor ficar só com duas mesmo…rsrs