Alternativa D
A questão apresenta um erro conceitual na implementação de uma função recursiva em Python para calcular o fatorial.
Conceitos Fundamentais
Para resolver este problema, precisamos entender duas definições principais:
- Definição Matemática do Fatorial:
O fatorial de um número inteiro não negativo n, representado por n!, é definido da seguinte forma:
n! = \begin{cases}
1 & \text{se } n = 0 \text{ ou } n = 1 \\
n \times (n-1)! & \text{se } n > 1
\end{cases}
Note que a fórmula para n > 1 depende do cálculo de (n-1)!. Isso é a essência da recursividade. - Recursividade em Programação:
Uma função recursiva é aquela que chama a si mesma durante sua execução. Para evitar loops infinitos, ela deve ter uma condição de parada (ou caso base) que interrompa a chamada.
Análise do Código Errado
O código fornecido na imagem possui a seguinte estrutura no bloco else:
return n * (n - 1) * (n - 2) * (n - 3) * (n - 4) * (n - 5);
- Erro: Esta linha simplesmente multiplica n pelos cinco números inteiros anteriores a ele. Ela não chama a função
Fatorial novamente. - Consequência: Se você rodar
Fatorial(6), o código retornará $6 \times 5 \times 4 \times 3 \times 2 \times 1 = 720$. Se rodar Fatorial(10), ele retornará $10 \times 9 \times 8 \times 7 \times 6 \times 5 = 151.200$. Isso não é o fatorial de 10 (que seria $10 \times 9 \times 8 \dots \times 1$). O código ignora os números menores que 5 e falha em implementar a lógica recursiva exigida.
Correção Proposta
A alternativa D propõe a mudança para:
return Fatorial(n - 1) * n;
Isso corrige o erro porque:
- Executa a chamada recursiva:
Fatorial(n - 1). - Multiplica o resultado dessa chamada pelo valor atual de
n. - Isso segue exatamente a fórmula matemática n! = n \times (n-1)!.
Comparativo de Lógica
| Linha | Código Original | Código Correto (Alternativa D) |
|---|
| 5 | return n (n - 1) ... | return Fatorial(n - 1) * n |
| Ação | Multiplicação manual fixa | Chamada da função + multiplicação |
| Recursão | Inexistente | Implementada corretamente |
Portanto, a alteração necessária está na linha 5, substituindo a sequência fixa de multiplicações pela chamada recursiva da própria função.