Matemática — Cálculo Múltipla Escolha

O trecho do código Python é uma função recursiva para o cálculo do fatorial de um número natural qualquer. Em qual linha está o erro e como corrigi-lo para que a função cumpra corretamente o seu propósito?

O trecho do código Python é uma função recursiva para o cálculo do fatorial de um número natural qualquer.

def Fatorial(n):
    if (n == 1) or (n == 0):
        return 1
    else:
        return n * (n - 1) * (n - 2) * (n - 3) * (n - 4) * (n - 5);

Em qual linha está o erro e como corrigi-lo para que a função cumpra corretamente o seu propósito?

  1. o código deveria ser "if (n == 1)" na linha 2.
  2. o código deveria ser "return 0" na linha 3.
  3. o código deveria ser "if (n == 1) and (n == 0):" na linha 2.
  4. o código deveria ser "return Fatorial(n - 1) * n;" na linha 5.
  5. o código deveria ser "return Fatorial(n) * n -1;" na linha 5.

Resolução completa

Explicação passo a passo

D
Alternativa D

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:

  1. 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.
  2. 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

LinhaCódigo OriginalCódigo Correto (Alternativa D)
5return n (n - 1) ...return Fatorial(n - 1) * n
AçãoMultiplicação manual fixaChamada da função + multiplicação
RecursãoInexistenteImplementada 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.

Tem outra questão para resolver?

Resolver agora com IA

Mais questões de Matemática — Cálculo

Ver mais Matemática — Cálculo resolvidas

Tem outra questão de Matemática — Cálculo?

Cole o enunciado, tire uma foto ou descreva o problema — a IA resolve com explicação completa em segundos.