1
resposta

Exercício 5 de Estruturas de repetição

Meu programa de calcular fatorial ficou bem diferente, porém achei que ficou mais simples que o apresentado pela instrutora. Me ajudem a identificar se é realmente isso ou ele ficaria com algum bug em algum caso

Minha solução:

num = int(input('Insira um número: '))

for i in range(1, num):
  num *= i

print(num)

Solução da instrutora:

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}')
1 resposta

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.