Solucionado (ver solução)
Solucionado
(ver solução)
9
respostas

Dúvida no Ex. 6 da Aula 2 - Variáveis e fluxo

Quando executo o código da correção exibe da seguinte maneira:

fat(1) = 1 fat(2) = 2 fat(3) = 6 fat(4) = 24 fat(5) = 60 fat(6) = 120 fat(7) = 210 fat(8) = 336 fat(9) = 504 fat(10) = 720

Porém quando chega no fatorial de 5 essa resposta esta incorreta porque deveria ser:

fat(1) = 1 fat(2) = 2 fat(3) = 6 fat(4) = 24 fat(5) = 120 fat(6) = 720 fat(7) = 5040 fat(8) = 40320 fat(9) = 362880 fat(10) = 3628800

9 respostas

Olá, Carlos!

Você pode postar o código do cálculo do fatorial pra gente ver?

Esse é meu código

class Fatorial
{
    public static void main(String []Args)
    {
        long fat=1;

        for(int i = 1;i<=10;i++)
        {
            fat = fat*i;
            System.out.println("Fatorial de "+ i +" e "+fat);
        }

    }
}

Esse é o da correção.

class Fatorial {
    public static void main (String[] args) {
        int fatorial = 1;
        for (int n = 1; n <= 10; n++) {

            if ( n==1 || n ==2 ) {
                fatorial = fatorial * n;
                System.out.println("fat(" + n + ") = " + fatorial);
            }
            if ( n > 2) {
                fatorial = n * (n-1) * (n - 2);
                System.out.println("fat(" + n + ") = " + fatorial);

            }

        }
    }
}

Olá, Carlos.

Testei o código que você disse estar com erro, e aqui deu certo.

Segue um print com o programa sendo executado: https://uploaddeimagens.com.br/imagens/print-jpg--510

Mas esse que voce esta testando e o meu, o da correção do exercicio que esta dando errado.

solução!

Ops. Me enganei. Perdão.

Realmente o segundo código está com o erro citado.

No final do exercício, tem um botão "Sugira uma Melhoria". Clica nele e posta isso pra que o instrutor possa corrigir.

;-)

Vou fazer isso Obrigado!

Olá Carlos, ao realizar o exercício identifiquei o mesmo problema.

Na solução proposta o cálculo está incompleto:

fatorial = n * (n-1) * (n - 2);

Exemplo:

fatorial = 5*(5-1)*(5-2);
fatorial = 5*4*3;  // Faltando assim "*2*1"

O seu post meu ajudou bastante, pôs fiquei confuso com os resultados. Você chegou a sugerir a melhoria?

Sugeri o seguinte algorítimo como correção:

class Fatorial{

    public static void main(String[] args) {

        int i;
        for(i=1;i<=10;i++){

            long fatorial = 1;
            for(int x=1;x<=i;x++){

                fatorial = fatorial*x;

            }

            System.out.println("O fatorial de: " + i +" e: "+fatorial);
        }

    }

}

Olá Mário, Sim já sugeri mas não obtive nenhuma resposta ainda.