Considere a função recursiva em Python: def freq(lst): if not lst: return {} head=lst[0]; f=freq(lst[1:])…
Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva
Utilizar conceitos iniciais de uma linguagem de programação na implementação de algoritmos escritos em linguagem corrente e/ou matemática.
Fonte: Base Nacional Comum Curricular (MEC).Questão
Considere a função recursiva em Python: def freq(lst): if not lst: return {} head=lst[0]; f=freq(lst[1:]); f[head]=f.get(head,0)+1; return f Qual o dicionário retornado por freq(['a','b','a'])?
- A) {'a': 1, 'b': 2}
- B) {'a': 2, 'b': 1}
- C) {'a': 1}
- D) {'a': 3}
- E) {'a': 0, 'b': 0}
✅ Resposta correta: alternativa B
Resolução passo a passo
- Identifique o caso base. Quando a lista está vazia, freq retorna um dicionário vazio {}.
- Desenrole a recursão a partir do fim da lista. Para ['a'], head é 'a' e f é {}; f.get('a', 0) é 0, então f['a'] = 1 e o retorno é {'a': 1}.
- Volte para ['b', 'a']. head é 'b' e f recebe {'a': 1} da chamada anterior; f.get('b', 0) é 0, então f['b'] = 1 e o retorno é {'a': 1, 'b': 1}.
- Volte para a chamada original ['a', 'b', 'a']. head é 'a' e f recebe {'a': 1, 'b': 1}; f.get('a', 0) é 1, então f['a'] = 2 e o retorno final é {'a': 2, 'b': 1}.
- Conclusão: o resultado é {'a': 2, 'b': 1}, que corresponde à alternativa B, igual ao gabarito oficial. A alternativa A inverte a contagem de 'a' e 'b'. A alternativa C esquece a chave 'b'. A alternativa D soma todos os elementos na chave 'a', ignorando o item 'b'. A alternativa E zera os contadores, mas o código sempre soma 1 a cada ocorrência.
💡 Dica: Analise a função e execute-a com a lista fornecida.
Alternativa por alternativa
O aluno provavelmente inverte a contagem, atribuindo duas ocorrências a 'b' e uma a 'a', talvez por não acompanhar a ordem em que os incrementos são feitos nas chamadas recursivas.
Por que engana: O aluno pode confundir a contagem de elementos, somando incorretamente as ocorrências de cada letra.
A recursão produz {} na base; ao retornar, incrementa 'a' duas vezes e 'b' uma vez, resultando em {'a':2,'b':1}.
O aluno acredita que o dicionário final guarda apenas uma chave, talvez por achar que apenas a última chamada recursiva é retornada, sem perceber que f acumula os resultados de todas as chamadas.
O aluno conta todos os elementos da lista como se fossem a mesma chave 'a', confundindo a contagem de frequência por chave com o tamanho total da lista.
O aluno acha que o get com valor padrão zera os contadores ou que o incremento não ocorre, quando na verdade cada ocorrência soma 1 à chave correspondente.
Raio-X da questão
função recursiva em Python
avaliacao
funções em Python · recursão
Revisar conceitos de funções recursivas e dicionários em Python.
O aluno pode confundir a contagem de elementos, somando incorretamente as ocorrências de cada letra.
ciencia_tecnologia
pensamento_critico
abstrato
Questões parecidas com resolução
- O Calendário Eleitoral organiza, em sequência temporal, procedimentos que viabilizam a participação política nas…
- Durante uma campanha de reciclagem, uma escola registrou em duas planilhas as quantidades, em quilogramas, recolhidas em…
- Uma cooperativa de reciclagem acompanha o fluxo de materiais em quatro setores durante uma semana. Para organizar os…
- Um centro comunitário utiliza um formulário digital para organizar inscrições em oficinas. A matriz de permissões P tem…
- Uma cooperativa acompanha a quantidade de mudas entregues por três hortas comunitárias durante três dias. Cada linha da…
- Uma cooperativa de agricultura urbana usa uma matriz quadrada para registrar pontuações de desempenho de quatro…
🔎 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
