Qual a saída do código Python a seguir: def recursao(n): if n == 0: return 1 else: return n * recursao(n - 1)…
Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva
Explorar e construir a solução de problemas por meio de refinamentos, utilizando diversos níveis de abstração desde a especificação até a implementação.
Fonte: Base Nacional Comum Curricular (MEC).Questã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) print(recursao(5))?
- A) 24
- B) 60
- C) 120
- D) 0
- E) 5
✅ Resposta correta: alternativa C
Resolução passo a passo
- A função recursao(n) retorna 1 quando n é 0, e nos demais casos retorna n multiplicado por recursao(n - 1).
- Chamando recursao(5), temos 5 * recursao(4).
- recursao(4) = 4 * recursao(3); recursao(3) = 3 * recursao(2); recursao(2) = 2 * recursao(1); recursao(1) = 1 * recursao(0).
- recursao(0) = 1, então recursao(1) = 1, recursao(2) = 2, recursao(3) = 6, recursao(4) = 24 e recursao(5) = 120.
- Logo, a saída é 120, que é o fatorial de 5 (5 x 4 x 3 x 2 x 1).
- A alternativa A (24) é o resultado de 4 fatorial, ou seja, a chamada recursiva parou um nível antes. A alternativa B (60) não corresponde a nenhum produto correto da sequência, sendo resultado de um erro de multiplicação. A alternativa D (0) ignora que o caso base retorna 1, e não 0, e a alternativa E (5) é apenas o valor de entrada, sem qualquer cálculo recursivo.
- O gabarito oficial C está correto.
💡 Dica: Analise a função recursiva e calcule o resultado.
Alternativa por alternativa
O aluno provavelmente parou a multiplicação em 4 fatorial, esquecendo de multiplicar pelo 5 da chamada inicial, ou interpretou que a recursão termina antes do último passo.
O aluno provavelmente fez uma multiplicação incompleta ou aproximada, como somar ou combinar fatores de forma incorreta (por exemplo 5 x 4 x 3 = 60 sem seguir a sequência até o 1).
Por que engana: Confundir o cálculo do fatorial, esquecendo de multiplicar todos os números até 1 ou errar o caso base da recursão.
A saída correta é 120, pois 5! = 5 x 4 x 3 x 2 x 1 = 120.
O aluno provavelmente acredita que o caso base da recursão retorna 0, quando na verdade o código retorna 1, que é o elemento neutro da multiplicação.
O aluno provavelmente entendeu que print mostra o valor do argumento de entrada, ignorando que a função executa a recursão e retorna o produto.
Raio-X da questão
função recursiva
avaliacao
função recursiva · multiplicação de números inteiros
Revisar conceitos de recursão em Python.
Confundir o cálculo do fatorial, esquecendo de multiplicar todos os números até 1 ou errar o caso base da recursão.
pensamento_critico
abstrato
Questões parecidas com resoluçã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)?
- Identifique a função recursiva que calcula o fatorial de um número n. Qual é a saída de fatorial(5)?
- 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…
- Qual é o resultado da chamada recursiva da função abaixo para n = 3? python def fatorial(n): if n == 0: return 1 else…
- Um programador está desenvolvendo uma função recursiva para calcular o fatorial de um número. Qual o resultado de…
- Um estudante desenvolve um algoritmo para calcular o fatorial de um número. Se o número é 5, qual deve ser o resultado?
🔎 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
