Qual alternativa representa uma função recursiva correta que calcula o fatorial de um número?
Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva
Elaborar algoritmos que envolvam instruções sequenciais, de repetição e de seleção usando uma linguagem de programação.
Fonte: Base Nacional Comum Curricular (MEC).Questão
Qual alternativa representa uma função recursiva correta que calcula o fatorial de um número?
- A) def fatorial(n): return n * fatorial(n - 1) if n > 1 else 1
- B) def fatorial(n): return n + fatorial(n - 1) if n > 1 else 1
- C) def fatorial(n): return fatorial(n - 1) if n > 1 else 1
- D) def fatorial(n): return n * fatorial(n + 1) if n > 1 else 1
- E) def fatorial(n): return 1 if n == 0 else n * fatorial(n - 1)
✅ Resposta correta: alternativa E
Resolução passo a passo
- O fatorial de n é o produto n*(n-1)*...*2*1, com 0! = 1. Uma função recursiva expressa isso como fatorial(n) = n * fatorial(n-1), com um caso base que interrompe a recursão quando n = 0 (ou n = 1). Passo 2: Resolvendo por conta própria, a alternativa E está correta: se n == 0 retorna 1 (caso base); senão retorna n * fatorial(n-1), que reduz n a cada chamada até chegar ao caso base. Para n = 4, o cálculo é 4*3*2*1*1 = 24. Passo 3: A alternativa A também calcula corretamente o fatorial para n >= 0, pois para n <= 1 retorna 1 e, para n > 1, usa a mesma recorrência; por isso a questão tem duas alternativas válidas, e o gabarito E está certo, mas a A também está. Passo 4: A alternativa B está errada porque usa soma (n + fatorial(n-1)) no lugar de produto. A alternativa C está errada porque nunca multiplica por n, retornando apenas fatorial(n-1), o que dá resultado errado (por exemplo, para n = 3 retorna 1 em vez de 6). A alternativa D está errada porque chama fatorial(n+1), afastando-se do caso base, o que gera recursão infinita.
💡 Dica: Analise as opções e verifique a definição de fatorial.
Alternativa por alternativa
O aluno pode achar que a versão com caso base 'n > 1 else 1' está errada por não tratar n = 0 explicitamente. Na verdade, para n = 0 ela também retorna 1, então a alternativa é válida, e o erro está em considerá-la incorreta.
Por que engana: Confundir a operacao correta na recursao, usando soma ou incremento errado, ou nao definir caso base adequadamente.
O aluno troca a operação de multiplicação pela de soma no passo recursivo, achando que o fatorial é a soma de n com os fatoriais menores.
O aluno acredita que basta reduzir n até o caso base, sem acumular produto, esquecendo que o fatorial depende de multiplicar n pelo valor da chamada anterior.
O aluno inverte o sentido da recursão, chamando fatorial(n + 1) em vez de fatorial(n - 1), o que faz n crescer e nunca alcançar o caso base, gerando recursão infinita.
Fatorial de zero é 1, mas a condição deve ser ajustada.
Raio-X da questão
função recursiva
avaliacao
funcoes recursivas basicas · operacoes matematicas basicas
Revisar a definição e implementação de funções recursivas.
Confundir a operacao correta na recursao, usando soma ou incremento errado, ou nao definir caso base adequadamente.
ciencia_tecnologia
pensamento_critico
abstrato
Questões parecidas com resolução
- Qual das seguintes alternativas é um exemplo de recursão em uma função que calcula o fatorial de um número?
- Identifique a função recursiva correta para calcular o fatorial de um número n.
- Descreva um algoritmo para calcular o fatorial de um número utilizando recursão.
- Como uma função recursiva pode ser utilizada para calcular o fatorial de um número?
- Considere uma função recursiva que retorna o fatorial de um número. Qual é a base da recursão normalmente utilizada para…
- Identifique a função recursiva que calcula o fatorial de um número n. Qual é a saída de fatorial(5)?
🔎 Procurar outra questão
Procure no banco do GeraProva pelo tema ou por um trecho do enunciado. Cada questão já vem com resolução comentada e a análise de cada alternativa.
Professor: monte a prova com questões como esta, com gabarito e folha de respostas, em 30 segundos. Ver planos · Blog
