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
- Para inscrever estudantes no clube de leitura, a biblioteca da escola usa um formulário digital. O formulário solicita…
- Em uma planilha com várias turmas, uma mesma fórmula foi inserida na primeira linha e copiada para as demais para manter…
- Uma turma quer registrar em ordem as etapas para calcular a média das notas em um programa educacional. — Que recurso de…
- Em uma atividade de programação, o estudante percebe que vai repetir a mesma conta várias vezes para diferentes valores…
- No terminal de empréstimo de bicicletas de um parque urbano, cada devolução é registrada em um painel de leitura. O…
- Em uma frase, defina o que é um algoritmo em computação.
🔎 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
