2
respostas

Solução do exercício fatorial.

Consegui chegar no fatorial com a seguinte resposta:

Defini uma variavel inteira que armazena o valor ao qual vamos fatorar

public class FatorialExercicio {
    public static void main(String[] args) {
        int valor = 6;

    }
}

int valor = 6;

Defini uma variável que representar o resultado, inicialmente em 1 int resultado = 1;

public class FatorialExercicio {
    public static void main(String[] args) {
        int valor = 6;
        resultado = 6;
    }
}

Fiz um for loop com um contador iniciando em 1 e somando 1 enquanto for menor que a variável valor. Nesse for eu somava o resultado da multiplicação do (contador + 1). Também adicionei um sysout pra ficar mais fácil visualizar o que estava acontecendo.

for (int contador = 1; contador < valor; contador++) {
            System.out.println(resultado + " x " + (contador + 1));
            resultado = resultado * (contador + 1);
        }

Por fim imprimi o resultado:


public class FatorialExercicio {
    public static void main(String[] args) {
        int valor = 6;
        // Fatorial de 4 = 4*3*2*1 = 24
        int resultado = 1;
        for (int contador = 1; contador < valor; contador++) {
            System.out.println(resultado + " x " + (contador + 1));
            resultado = resultado * (contador + 1);

        }

        System.out.println(resultado);
    }
}
2 respostas

Olá Guilherme, tudo bem com você?

Os resultados estão corretos, mas o contador está mostrando valores diferentes que não correspondem aos seus respectivos fatoriais. Eu vi a forma que você contornou o problema do contador e a ideia está correta, eu só recomendo somar "+1" na variável valor ao invés do contador. Dessa forma, podemos inverter de lugar a linha que faz o incremento no resultado e a linha que faz a impressão:

public static void main(String[] args) {

    int valor = 6;
    // Fatorial de 4 = 4*3*2*1 = 24
    int resultado = 1;
    // uma outra alternativa eh deixar o "valor" sem o "+ 1" e usar o sinal "<=" (menor ou igual) no lugar de "<" (menor)
    for (int contador = 1; contador < (valor + 1); contador++) {
        // agora, o fatorial eh calculado antes da impressao sem a necessidade de somar +1 no contador
        resultado = resultado * contador;
        System.out.println(resultado + " x " + contador);
    }

    System.out.println(resultado);
}

O único problema foi na hora de exibir o valor do contador no console. Mas parabéns, apenas continue assim!! A lógica que você usou estava correta! :D

Boa dica, achei que ficou mais legível o for desse jeito que você falou. Obrigado Thiago!