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