GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Sequencia de fibonacci


#1

boa tarde, pq se eu colocar ele para gerar 92 sequencias, o código começa a errar a sequeciana ?

public static void main(String[] args) {
Scanner scam = new Scanner(System.in);
String str = “Sequência de Fibonnacci\n”;
int sequencia = 1, antecesor = 0,aux;

    System.out.print(str);

    while (true) {

        try {
            System.out.print("\nQuantos numeros dejesa gerar:\t");
            str = scam.nextLine();
            

            byte num = Byte.parseByte(str);

            if (num < 3 || num > 92) {
                System.out.println("ERRO: A quantidade deve estar entre 3 e 92!");
            } else {
                
                System.out.println("\n1");
                for (int cont = 1; cont <= num; cont++) {
                    
                    aux = sequencia;
                    sequencia  = sequencia + antecesor; 
                    antecesor = aux ;                         
                    System.out.println(sequencia);
                }break;
            }
        } catch (NumberFormatException nfe) {
            System.out.println("ERRO: dado Inválido!");
        }

    }
    
}

#2

Boa tarde Vitor.
Sua dúvida é bem simples de ser entendida. Você declarou que a sua sequência é do tipo in.
Quero que faça o seguinte, digite esse código:
System.out.println(Integer.MAX_VALUE);
Aparecerá 2147483647, isso por que esse é o valor máximo positivo que o tipo int consegue armazenar.
A partir do contado 46, o valor da sequência ultrapassa o valor máximo, então ele faz um “loop”, começando pelo valor mínimo, que você pode conferir com esse código, e continua a sequência ate isso acontecer novamente…
System.out.println(Integer.MIN_VALUE);

Existem 4 tipos primitivos de valores inteiros: byte, short, int e long. Todos esses tipos possuem um valor máximo e mínimo, e para valores maiores, o melhor é a utilização da classe BigInteger ou BigDecimal.


#3

mt obrigado