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

RESOLVIDO - Desafio Opcional: Fatorial do curso Java JRE e JDK -

Me custaram alguns neurônios, mas o meu código ficou assim utilizando o método while:

public class DesafioFatorial2 {
    public static void main(String[] args) {

        int contador = 1;  // 1
        int fatorialDe10 = (10-9); // 1
        while (contador < 10) {            
            int resultado = fatorialDe10 * (contador +1);  // 1 * 2 = 2      
            System.out.println(resultado); // 2
            fatorialDe10 = resultado; //2
            contador++;         
        }
    }
}

// (10-9) * (10-8) Resultado * (10-7) Resultado * (10-6) Resultado * (10-5) Resultado * (10-4) Resultado * (10-3) Resultado * (10-2) Resultado * (10-1) Resultado * (10-0)
//    1   *     2            *    3             *    4             *    5             *    6             *    7             *    8             *    9             *    10
//                      2                 6                  24                120                720                 5.040            40.320            362.880    3.628.800

Também fiz usando o método for, como segue abaixo:

public class DesafioFatorial3 {
    public static void main(String[] args) {
        int fatorDe10 = (10 - 9);
        for (int i = 2; i <= 10; i++) {
            int resultado = fatorDe10 * i;
            System.out.println(resultado);
            fatorDe10 = resultado;

        }

    }

}
5 respostas

Oie George, tudo bem contigo?

Bem legal a forma como você resolveu de duas maneiras!

Uma provocação que quero fazer, qual a razão de colocar int fatorDe10 = (10 - 9)? Não seria mais fácil fazer assim int fatorDe10 = 1?

Para você ter outro parâmetro, segue abaixo uma outra lógica para resolver esse mesmo exercício com o while:

        int i = 1;
        int fatorial = 1;

        while(i < 11) {
            System.out.println(i  + "! = " + fatorial);
            i++;
            fatorial *= i;

        }

Continue assim e bons estudos!

Oi Igor! Obrigado pelo comentário! Na verdade eu coloquei o nome da variável de "fatorDe10" e atribui o valor de "(10 - 9)" apenas para que fique mais inteligível para quem vai ler. Isso vai parecer que o código vai ficar mais lógico. Copiei o seu código e rodei e deu tudo certo, mas não entendi esse operador que vc colocou no meio System.out.println(i + "! = " + fatorial);. Parece um operador de diferente. Vc poderia descrever o que está sendo pedido para imprimir?

Obrigado!

Opa George

Entendi agora!

No System.out.println(i + "! = " + fatorial); o único operador sendo usado é o de concatenação com o "+". Basicamente tô pedindo para unir o número que estiver dentro da variável "i" naquele momento, com a String "! = " e unindo com o valor do fatorial do número que estiver dentro da variável "i".

Veja o exemplo abaixo:

System.out.println(i + "! = " + fatorial);
// resultado do primeiro loop: 1! = 1

Conseguiu entender?

solução!

Agora entendi! Voltei no código para olhar o resultado e vi que ficou bem lógico. Vc imprimiu o contador + o símbolo do fatorial + o resultado. Ficou muito legal mesmo! Obrigado pela dica! Vou buscar melhorar as minhas respostas também.

A implementação do for se deu assim:

    int  fatorial = 1;
    for (int n = 1; n <= 10; n++) {
        fatorial *= n;                                
    }
    System.out.println("Fatorial de 10 é " + fatorial);

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software