Oi, Jackeline! Tudo bem?
É perfeitamente normal sentir esse desafio inicial ao tentar ler a lógica por trás do código. O fatorial é um ótimo exercício para entender como os valores mudam dentro de um laço de repetição.
Antes de ir para as linhas, lembre-se que o fatorial de um número (ex: ) é a multiplicação dele por todos os seus antecessores até o número 1: . No código, fazemos o caminho inverso (), o que resulta no mesmo valor.
import java.util.Scanner; // importamos a biblioteca para que o Java consiga ler o que você digita no teclado.
public class CalculadoraDeFatorial {
public static void main(String[] args) {
// criamos o objeto 'scanner' que será o nosso "ouvido" para as entradas do teclado.
Scanner scanner = new Scanner(System.in);
System.out.println("Digite um número: ");
// guardamos o número escolhido. Se você digitar 5, a variável 'numeroDigitadoPeloUsuario' valerá 5.
int numeroDigitadoPeloUsuario = scanner.nextInt();
/* aqui tá um segredo: começamos a variável 'fatorial' com 1.
Se fosse 0, qualquer multiplicação resultaria em 0. Ela servirá como um "acumulador".
*/
int fatorial = 1;
/* O loop FOR funciona como um contador:
1. int i = 1: Começamos a contagem no 1.
2. i <= numeroDigitadoPeloUsuario: O loop continua rodando enquanto 'i' não ultrapassar o número que você digitou.
3. i++: A cada rodada, somamos +1 ao valor de 'i'.
*/
for(int i = 1; i <= numeroDigitadoPeloUsuario; i++) {
/* aqui acontece a mágica. O operador '*=' pega o valor atual de 'fatorial'
e multiplica pelo valor de 'i', guardando o novo resultado na própria variável 'fatorial'.
Exemplo se o usuário digitou 3:
1ª rodada: fatorial (1) * i (1) = 1
2ª rodada: fatorial (1) * i (2) = 2
3ª rodada: fatorial (2) * i (3) = 6 -> Fim do loop!
*/
fatorial *= i;
}
// Exibimos o resultado final que ficou guardado no nosso acumulador.
System.out.println(" O fatorial de " + numeroDigitadoPeloUsuario + " é: " + fatorial);
// Fechamos o scanner para liberar os recursos do sistema.
scanner.close();
}
}
Pra facilitar, imagine que a variável fatorial é uma caixa onde você guarda o resultado. O for é como uma pessoa que vai te entregando números um por um (1, depois 2, depois 3...). Cada vez que você recebe um número novo, você multiplica pelo que já tem dentro da caixa e coloca o resultado lá novamente.
Espero que essa explicação ajude a clarear os conceitos de acumuladores e laços de repetição.
Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!