Ambas as soluções calculam o fatorial de um número inteiro, mas a sua solução tem um pequeno problema que pode causar resultados incorretos. Vou explicar a diferença e mostrar como corrigir isso.
Sua Solução:
num = int(input('Insira um número: '))
for i in range(1, num):
num *= i
print(num)
Nessa solução, você está usando um loop for
para iterar de 1 até num - 1
(ou seja, até um número antes do número inserido). Em cada iteração, você multiplica num
pelo valor de i
. No entanto, o problema é que você está alterando o valor de num
durante o loop, o que pode resultar em um cálculo incorreto.
Por exemplo, se o usuário inserir 5
, na primeira iteração, você multiplicará num
por 1
, resultando em 5
. Mas, na segunda iteração, você multiplicará o valor alterado 5
por 2
, obtendo 10
ao invés do valor correto, que seria 5! = 120
.
A Solução Correta:
num = int(input('Informe um número inteiro: '))
fatorial = 1
i = num
while i > 0:
fatorial *= i
i -= 1
print(f'Fatorial de {num} é {fatorial}')
Nessa solução, a instrutora utiliza um loop while
que começa do número inserido (num
) e vai diminuindo i
em cada iteração até chegar a 1. Isso garante que o valor de num
permaneça constante durante todo o cálculo do fatorial.
Portanto, a solução da instrutora é mais correta em termos de lógica. Certifique-se de que a sua solução seja ajustada para não alterar o valor original de num
durante o cálculo do fatorial.