GeraProva GeraProva Provas com IA para professores do Brasil
Computação3ª sérieBNCC EM13CO02Fácil⏱ medio

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

Habilidade BNCC EM13CO02

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))?

  1. A) 24
  2. B) 60
  3. C) 120
  4. D) 0
  5. E) 5

✅ Resposta correta: alternativa C

Resolução passo a passo

  1. A função recursao(n) retorna 1 quando n é 0, e nos demais casos retorna n multiplicado por recursao(n - 1).
  2. Chamando recursao(5), temos 5 * recursao(4).
  3. recursao(4) = 4 * recursao(3); recursao(3) = 3 * recursao(2); recursao(2) = 2 * recursao(1); recursao(1) = 1 * recursao(0).
  4. recursao(0) = 1, então recursao(1) = 1, recursao(2) = 2, recursao(3) = 6, recursao(4) = 24 e recursao(5) = 120.
  5. Logo, a saída é 120, que é o fatorial de 5 (5 x 4 x 3 x 2 x 1).
  6. 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.
  7. O gabarito oficial C está correto.

💡 Dica: Analise a função recursiva e calcule o resultado.

Alternativa por alternativa

A Erradaerro: Procedimental

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.

B Erradaerro: Procedimentala que mais engana

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.

C Correta

A saída correta é 120, pois 5! = 5 x 4 x 3 x 2 x 1 = 120.

D Erradaerro: Conceitual

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.

E Erradaerro: Interpretaçã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

Dificuldade Fácil
Bloom Aplicar
Leitura medio
Discriminação alto
Peso pedagógico alto
Autonomia do enunciado completo
Cobertura da habilidade unica
🧪 Simulado🩺 Diagnóstico🧮 Exige cálculo🏠 Cotidiano🔗 Interdisciplinar⭐ Representativa✍️ direta🧩 consolidacao
🎯 Conceito central

função recursiva

📌 Objetivo

avaliacao

🧱 Pré-requisitos

função recursiva · multiplicação de números inteiros

📚 Reveja

Revisar conceitos de recursão em Python.

⚠️ Erro mais comum

Confundir o cálculo do fatorial, esquecendo de multiplicar todos os números até 1 ou errar o caso base da recursão.

🤝 Socioemocional

pensamento_critico

🏫 Contexto

abstrato

Questões parecidas com resolução

Todas as questões de [CONFERIR] Construir soluções baseadas no uso de algoritmos e conceitos da Computação para resolver problemas, avaliando suas qualidades e melhorando-as.

🔎 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

Ocorreu um erro inesperado. Recarregar X

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.