GeraProva GeraProva Provas com IA para professores do Brasil
Computação8º anoBNCC EF08CO01Difícil⏱ medio

— O painel do mutirão de conserto do centro comunitário está “escondendo” trabalho — reclamou a coordenadora…

Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva

Habilidade BNCC EF08CO01

Construir soluções de problemas usando a técnica de recursão e automatizar tais soluções usando uma linguagem de programação.

Fonte: Base Nacional Comum Curricular (MEC).

Questão

— O painel do mutirão de conserto do centro comunitário está “escondendo” trabalho — reclamou a coordenadora ao ver o relatório do aplicativo. No app, cada serviço pode ser dividido em subtarefas. Por exemplo, “Revisar som do auditório” pode virar “trocar cabos” e “testar caixas”; e “testar caixas” ainda pode virar “testar esquerda” e “testar direita”. Ou seja, uma tarefa pode ter uma lista de subtarefas, e cada subtarefa pode ter outras, sem limite de níveis. O relatório precisa mostrar quantas tarefas serão executadas no total, contando a tarefa principal e todas as subtarefas em qualquer profundidade. A equipe percebeu que contar “só dois níveis” funciona em alguns casos, mas falha quando alguém detalha mais o serviço. Por isso, decidiram automatizar a contagem com uma função recursiva. Analise a necessidade descrita e identifique o algoritmo em pseudocódigo que calcula corretamente o total de tarefas, contando a própria tarefa e todas as subtarefas, independentemente da profundidade.

  1. A) contar(t): se filhos(t) vazio retorne 0; s=0; para f em filhos(t) s=s+contar(f); retorne s
  2. B) contar(t): s=1; para f em filhos(t) s=s+1; retorne s
  3. C) contar(t): se filhos(t) vazio retorne 1; retorne 1+contar(t)
  4. D) contar(t): se filhos(t) vazio retorne 1; s=1; para f em filhos(t) s=s+contar(f); retorne s
  5. E) contar(t): se filhos(t) nao vazio retorne 1; s=1; para f em filhos(t) s=s+contar(f); retorne s

✅ Resposta correta: alternativa D

Resolução passo a passo

  1. O objetivo é contar a própria tarefa mais todas as subtarefas em qualquer profundidade, então a função precisa ser recursiva e somar 1 por cada tarefa visitada.
  2. Caso base: se a tarefa não tem filhos, ela é uma folha e conta apenas 1 (ela mesma). Isso é o que a alternativa D faz com 'se filhos(t) vazio retorne 1'.
  3. Caso geral: se a tarefa tem filhos, começa com s=1 (a própria tarefa) e soma, para cada subtarefa f, o total de tarefas de f obtido pela própria chamada recursiva contar(f). Assim, cada nível é contado uma vez, por qualquer profundidade.
  4. Verificando o exemplo: 'Revisar som' (1) + 'trocar cabos' (1) + 'testar caixas' (1) + 'testar esquerda' (1) + 'testar direita' (1) = 5 tarefas. A alternativa D retorna 5.
  5. Por que as outras estão erradas: A retorna 0 para folhas e não conta a própria tarefa quando tem filhos, subcontando; B não é recursiva, então só conta os filhos diretos e ignora os netos; C não tem caso base que funcione para nós com filhos, pois chama contar(t) sobre o mesmo nó, gerando recursão infinita; E, ao retornar 1 imediatamente para qualquer tarefa com filhos, ignora todas as subtarefas.
  6. Conclusão: o gabarito oficial D está correto, pois é a única opção que combina caso base correto, contagem da própria tarefa e soma recursiva das subtarefas.

💡 Dica: Identifique a estrutura recursiva para contar todas as subtarefas em qualquer profundidade.

Alternativa por alternativa

A Erradaerro: Conceitual

O aluno acha que uma tarefa sem subtarefas vale 0 e que a tarefa principal não precisa ser contada, somando apenas as contagens das subtarefas.

B Erradaerro: Interpretação

O aluno pensa que basta contar as subtarefas diretas, achando que o 'sem limite de níveis' do enunciado não exige recursão.

C Erradaerro: Procedimental

O aluno entende que a função deve retornar 1 mais o resultado de contar, mas não percebe que chama a mesma tarefa t sem reduzir o problema, o que gera recursão infinita.

D Correta

Define caso-base (folha) e soma 1 com as contagens recursivas de cada subtarefa, cobrindo qualquer profundidade.

E Erradaerro: Procedimental

O aluno inverte a condição do caso base, retornando 1 para tarefas que têm subtarefas e sem percorrer os filhos, como se a existência de filhos encerrasse a contagem.

Raio-X da questão

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

recursao em algoritmos

📌 Objetivo

diagnostico

🧱 Pré-requisitos

estrutura de dados hierarquica · conceito de funcao recursiva

📚 Reveja

Estude recursão e estruturas de dados hierárquicas.

⚠️ Erro mais comum

O aluno pode contar apenas dois níveis de subtarefas, ignorando níveis mais profundos, ou não incluir a tarefa principal na contagem.

🌎 Tema transversal

ciencia_tecnologia

🤝 Socioemocional

pensamento_critico

🏫 Contexto

cotidiano

Questões parecidas com resolução

Todas as questões de Programação - Programação com listas e recursã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

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.