Boa noite Fabiana! Tudo bem com você?
Ótimas perguntas, vamos por partes para ficar mais fácil a compreensão de cada uma delas.
Por que fatorial = 1?
Quando calculamos o fatorial de um número, começamos a multiplicação a partir de 1. Isso porque, se começássemos com 0, qualquer multiplicação resultaria em 0, o que não é o que queremos. Por exemplo, o fatorial de 5 é calculado como 5 x 4 x 3 x 2 x 1. Iniciar a variável fatorial com 1 nos permite multiplicar por cada número na sequência sem afetar o resultado final.
Por que finaliza com i -= 1?
O i -= 1 é uma forma de decrementar o valor de i em 1 a cada iteração do loop. No contexto do cálculo do fatorial, isso é necessário porque estamos multiplicando o número inicial pelo seu antecessor até chegar a 1. Assim, se começarmos com i igual ao número fornecido pela pessoa usuária, precisamos diminuir i em 1 a cada passo para seguir multiplicando pelos números anteriores até chegar a 1. Por exemplo, se o número fornecido é 5, o loop deve multiplicar 5 x 4 x 3 x 2 x 1. O i -= 1 faz com que o loop vá de 5 até 1, multiplicando cada valor no caminho.
Exemplo prático
Antes de irmos para o exemplo, é importante lembrar que:
*= significa "multiplicar e atualizar". Exemplo: fatorial *= i é o mesmo que fatorial = fatorial * i.-= significa "subtrair e atualizar". Exemplo: i -= 1 é o mesmo que i = i - 1.
Agora,vamos partir para prática. Imagine que queremos calcular o fatorial de 3. O programa funcionará assim:
- Primeiro, pedimos ao usuário para informar um número. No caso, digitamos 3, então
num = 3. - Inicializamos a variável
fatorial com 1. Começamos com 1 porque é o valor neutro da multiplicação. - A variável
i também começa com o valor de num, ou seja, i = 3. Ela será usada para contar de forma decrescente até 1. - Entramos no laço
while que continua enquanto i > 0. Vamos calcular assim:- Primeira vez no laço (
i = 3):- Atualizamos
fatorial = fatorial * i ou seja, fatorial = 1 * 3 que resultará em 3. - Reduzimos
i em 1: agora i = 2.
- Segunda vez no laço (
i = 2):- Atualizamos
fatorial = fatorial * i ou seja, fatorial = 3 * 2 que resultará em 6`. - Reduzimos
i em 1: agora i = 1.
- Terceira vez no laço (
i = 1):- Atualizamos
fatorial = fatorial * i ou seja, fatorial = 6 * 1 que resultará em 6`. - Reduzimos
i em 1: agora i = 0.
- O laço termina porque
i = 0 (a condição i > 0 não é mais verdadeira). - O programa exibe:
Fatorial de 3 é 6.
Espero ter ajudado. Conte com o apoio do Fórum na sua jornada. Fico à disposição. Abraços e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado