— Achei que era so contar as pastas, mas cada pasta tem outras dentro — reclamou uma voluntaria ao organizar o…
Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva
Criar soluções de problemas para os quais seja adequado o uso de listas para descrever suas informações e automatizá-las usando uma linguagem de programação, empregando ou não a recursão como uma técnica de resolver o problema.
Fonte: Base Nacional Comum Curricular (MEC).Questão
— Achei que era so contar as pastas, mas cada pasta tem outras dentro — reclamou uma voluntaria ao organizar o acervo digital de uma radio comunitaria. Para economizar internet, eles querem estimar quantos arquivos (audios e textos) serao enviados. Cada pasta guarda dois dados: (1) qtd, o numero de arquivos diretamente dentro dela; (2) sub, a lista de subpastas. O acervo esta assim: Acervo: qtd=2, sub=[Reportagens, Trilhas] Reportagens: qtd=3, sub=[Ribeira, Feira] Ribeira: qtd=4, sub=[] Feira: qtd=0, sub=[] Trilhas: qtd=1, sub=[Aberturas, Efeitos] Aberturas: qtd=2, sub=[] Efeitos: qtd=3, sub=[] Eles decidiram automatizar a contagem com uma funcao recursiva total(p), que devolve o total de arquivos dentro da pasta p, somando tambem o que estiver em todas as subpastas, em qualquer profundidade. Com base no texto, identifique a definicao de total(p) que, por recursao, calcula corretamente o total de arquivos e faz total(Acervo)=15.
- A) total(p): se p.sub==[] retorna p.qtd; senao retorna p.qtd + 1 + soma(total(s) para s em p.sub)
- B) total(p): se p.sub==[] retorna 0; senao retorna p.qtd + soma(total(s) para s em p.sub)
- C) total(p): se p.sub==[] retorna p.qtd; senao retorna soma(total(s) para s em p.sub)
- D) total(p): se p.sub==[] retorna p.qtd; senao retorna p.qtd + soma(total(s) para s em p.sub)
- E) total(p): se p.qtd==0 retorna 0; senao retorna p.qtd + soma(total(s) para s em p.sub)
✅ Resposta correta: alternativa D
Resolução passo a passo
- Calcule o total real do acervo. Reportagens tem 3 arquivos diretos, mais Ribeira (4) e Feira (0), totalizando 7. Trilhas tem 1 arquivo direto, mais Aberturas (2) e Efeitos (3), totalizando 6. Acervo tem 2 diretos, mais 7 e 6, dando 15. Passo 2: A definicao precisa, em cada pasta, somar os arquivos diretos (p.qtd) com o total de cada subpasta, e parar quando nao houver subpastas (p.sub vazio), retornando apenas p.qtd. Passo 3: Testar a alternativa D: Ribeira retorna 4, Feira retorna 0, Reportagens retorna 3+4+0=7, Aberturas retorna 2, Efeitos retorna 3, Trilhas retorna 1+2+3=6 e Acervo retorna 2+7+6=15. Esta correta. Passo 4: Por que as outras estao erradas. A: soma 1 para cada pasta com subpastas, o que nao existe no enunciado, e daria 18 em vez de 15. B: as pastas folha retornam 0 em vez de p.qtd, perdendo os arquivos das pastas sem subpastas, e daria 6. C: ignora os arquivos diretos de cada pasta que tem subpastas, e daria 9. E: parece funcionar neste exemplo, mas a condicao p.qtd==0 esta errada, pois uma pasta com qtd=0 e subpastas com arquivos retornaria 0 indevidamente; por exemplo, X (qtd=0, sub=[Y]) com Y (qtd=5) daria 0 e nao 5. Passo 5: Como o gabarito oficial e D, concordo com ele.
💡 Dica: Analise a definição recursiva e verifique a soma dos arquivos incluindo subpastas.
Alternativa por alternativa
Acredita que cada subpasta acrescenta um arquivo extra ou um contador de pastas ao total, somando um 1 a cada pasta que tem subpastas.
Por que engana: Confundir a soma dos arquivos diretos com a soma total incluindo subpastas, ou esquecer de somar a quantidade da pasta atual.
Entende que uma pasta sem subpastas nao tem arquivos a contar e retorna 0, esquecendo que os arquivos diretos de pastas folha (como Ribeira e Aberturas) devem ser contados.
Confunde o total de uma pasta com o total de suas subpastas e descarta os arquivos diretos (p.qtd) das pastas que possuem subpastas, como Acervo e Reportagens.
Usa caso-base (sem subpastas) e, no caso recursivo, soma os arquivos da pasta aos totais das subpastas, resultando 15 no Acervo.
Usa como caso base a condicao de a pasta ter zero arquivos diretos, mas isso ignora que uma pasta com qtd=0 pode ter subpastas com arquivos; assim, a pasta Feira funciona por acaso, mas a logica geral falha.
Raio-X da questão
função recursiva, contagem arquivos
avaliacao
função recursiva básica · estrutura de dados em árvore
Estude funções recursivas e estruturas de dados em árvore.
Confundir a soma dos arquivos diretos com a soma total incluindo subpastas, ou esquecer de somar a quantidade da pasta atual.
ciencia_tecnologia
pensamento_critico
cotidiano
Questões parecidas com resolução
- Para contar os arquivos de uma pasta e de todas as suas subpastas, em qualquer profundidade, qual técnica percorre essa…
- — O painel do mutirão de conserto do centro comunitário está “escondendo” trabalho — reclamou a coordenadora ao ver o…
- Ao organizar as fotos do campeonato do bairro, Lia criou um programa para separar imagens por ano, mês e dia. Primeiro…
- — Achou a gravação de 1998? — perguntou a técnica da rádio comunitária, enquanto organizava o acervo no computador. O…
- Dados levantados por um grupo de jovens voluntários apontam que eles catalogaram cerca de 1.200 artefatos em um acervo…
- Em um programa, qual é o uso correto da recursão?
Todas as questões de Programação - Programação com listas e recursão
🔎 Resolver outra questão
Cole o enunciado e veja a resolução passo a passo, a alternativa correta e por que as outras estão erradas.
Professor: monte a prova com questões como esta, com gabarito e folha de respostas, em 30 segundos. Ver planos · Blog
