Analise o código a seguir: def fatorial(n): return 1 if n==0 else n * fatorial(n-1). Qual o resultado de…
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
Analise o código a seguir: def fatorial(n): return 1 if n==0 else n * fatorial(n-1). Qual o resultado de fatorial(5)?
- A) 120
- B) 60
- C) 24
- D) 1
- E) 5
✅ Resposta correta: alternativa A
Resolução passo a passo
- A função fatorial(n) retorna 1 quando n é 0 e, caso contrário, retorna n multiplicado por fatorial(n-1), ou seja, uma chamada recursiva que reduz n em uma unidade a cada passo.
- Para calcular fatorial(5), temos 5 * fatorial(4).
- Expandindo as chamadas: 5 * 4 * fatorial(3), depois 5 * 4 * 3 * fatorial(2), depois 5 * 4 * 3 * 2 * fatorial(1), e por fim 5 * 4 * 3 * 2 * 1 * fatorial(0).
- Como fatorial(0) vale 1, o resultado é 5 * 4 * 3 * 2 * 1 * 1 = 120.
- Portanto a alternativa correta é A, que coincide com o gabarito oficial. A alternativa B (60) seria o resultado de omitir um fator ou calcular 5 * 4 * 3, a alternativa C (24) corresponde a 4!, a alternativa D (1) é o caso base aplicado diretamente, e a alternativa E (5) é apenas o valor de entrada, sem a multiplicação recursiva.
💡 Dica: Calcule o fatorial de 5 utilizando a definição recursiva.
Alternativa por alternativa
5! = 5 * 4 * 3 * 2 * 1 = 120.
O aluno provavelmente interrompeu a multiplicação antes do fim, por exemplo calculando 5 * 4 * 3 e parando, ou perdeu um dos fatores ao expandir a recursão.
Por que engana: Confundir a funcao recursiva com uma iterativa, ou nao entender a condicao base, resultando em calculos incorretos do fatorial.
O aluno provavelmente calculou 4! em vez de 5!, ou seja, aplicou a recursão até 4 sem incluir o fator 5 inicial.
O aluno confundiu o caso base da recursão (retorna 1 quando n é 0) com o resultado final, achando que a função devolve 1 para qualquer entrada.
O aluno acreditou que a função apenas devolve o próprio argumento, ignorando a multiplicação n * fatorial(n-1) presente no código.
Raio-X da questão
fatorial recursivo
avaliacao
recursao em funcoes · operacoes multiplicativas
Revisar a definição e cálculo do fatorial.
Confundir a funcao recursiva com uma iterativa, ou nao entender a condicao base, resultando em calculos incorretos do fatorial.
pensamento_critico
abstrato
Questões parecidas com resolução
- Qual a saída do código Python a seguir: def recursao(n): if n == 0: return 1 else: return n * recursao(n - 1)…
- Um programador está desenvolvendo uma função recursiva para calcular o fatorial de um número. Qual o resultado de…
- Identifique a função recursiva que calcula o fatorial de um número n. Qual é a saída de fatorial(5)?
- Um estudante desenvolve um algoritmo para calcular o fatorial de um número. Se o número é 5, qual deve ser o resultado?
- Qual é o resultado da chamada recursiva da função abaixo para n = 3? python def fatorial(n): if n == 0: return 1 else…
- Analise a seguinte função em Python que usa recursão: def soma(n): if n == 0: return 0 else: return n + soma(n-1). Qual…
🔎 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
