GeraProva GeraProva Provas com IA para professores do Brasil
Computação2ª sérieBNCC EM13CO02Difícil⏱ medio

Em um programa, você precisa calcular o fatorial de um número usando recursão. Qual parte do algoritmo é…

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

Em um programa, você precisa calcular o fatorial de um número usando recursão. Qual parte do algoritmo é crucial para evitar loops infinitos?

  1. A) Valor inicial
  2. B) Condição de parada
  3. C) Variáveis globais
  4. D) Saídas do programa
  5. E) Parâmetros da função

✅ Resposta correta: alternativa B

Resolução passo a passo

  1. Na recursão, uma função chama a si mesma com argumentos cada vez menores ou mais próximos de um estado final. Sem um ponto em que a chamada deixa de acontecer, a função nunca termina e gera um loop infinito (na prática, estouro de pilha).
  2. No cálculo do fatorial, por exemplo, n! = n * (n-1)!, com a regra de que 0! = 1. A condição de parada é justamente o caso base (se n = 0, retorne 1), que interrompe as chamadas recursivas.
  3. Portanto, a parte crucial para evitar loops infinitos é a condição de parada, alternativa B, que é também o gabarito oficial.
  4. Por que as outras estão erradas: A) o valor inicial é um dado de entrada e não impede a repetição das chamadas; C) variáveis globais podem até ser usadas, mas não garantem o término da recursão; D) as saídas do programa são resultados produzidos e não controlam as chamadas; E) os parâmetros da função transportam os dados de cada chamada, mas sem uma condição de parada eles não evitam a recursão infinita.

💡 Dica: Identifique a condição de parada da recursão.

Alternativa por alternativa

A Erradaerro: Conceituala que mais engana

O aluno pode imaginar que basta definir um valor inicial correto para a função não se repetir indefinidamente, confundindo o ponto de partida com o critério de término.

Por que engana: Confundir a condicao de parada com outras partes do algoritmo, levando a loops infinitos.

B Correta

A condição de parada limita a profundidade da recursão.

C Erradaerro: Conceitual

O aluno pode supor que guardar o estado em variáveis globais controla o fluxo das chamadas e, assim, impede o loop, quando na verdade isso não garante o término da recursão.

D Erradaerro: Interpretação

O aluno pode associar o controle do programa às saídas (resultados impressos ou retornados), sem perceber que elas são consequência do cálculo e não o que interrompe as chamadas.

E Erradaerro: Conceitual

O aluno pode achar que, por os parâmetros mudarem a cada chamada, eles sozinhos já encerram a recursão, esquecendo que é preciso um caso base explícito para parar.

Raio-X da questão

Dificuldade Difí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🧩 desafio
🎯 Conceito central

recursão e fatorial

📌 Objetivo

avaliacao

🧱 Pré-requisitos

recursao basica · conceito de funcao

📚 Reveja

Revisar o conceito de recursão e suas condições de parada.

⚠️ Erro mais comum

Confundir a condicao de parada com outras partes do algoritmo, levando a loops infinitos.

🌎 Tema transversal

ciencia_tecnologia

🤝 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.