GeraProva GeraProva Provas com IA para professores do Brasil
Matemática2ª sérieBNCC EM13MAT405Média⏱ medio

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

Habilidade BNCC EM13MAT405

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

  1. A) {'a': 1, 'b': 2}
  2. B) {'a': 2, 'b': 1}
  3. C) {'a': 1}
  4. D) {'a': 3}
  5. E) {'a': 0, 'b': 0}

✅ Resposta correta: alternativa B

Resolução passo a passo

  1. Identifique o caso base. Quando a lista está vazia, freq retorna um dicionário vazio {}.
  2. 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}.
  3. 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}.
  4. 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}.
  5. 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

A Erradaerro: Procedimentala que mais engana

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.

B Correta

A recursão produz {} na base; ao retornar, incrementa 'a' duas vezes e 'b' uma vez, resultando em {'a':2,'b':1}.

C Erradaerro: Conceitual

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.

D Erradaerro: Conceitual

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.

E Erradaerro: Procedimental

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

Dificuldade Média
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

função recursiva em Python

📌 Objetivo

avaliacao

🧱 Pré-requisitos

funções em Python · recursão

📚 Reveja

Revisar conceitos de funções recursivas e dicionários em Python.

⚠️ Erro mais comum

O aluno pode confundir a contagem de elementos, somando incorretamente as ocorrências de cada letra.

🌎 Tema transversal

ciencia_tecnologia

🤝 Socioemocional

pensamento_critico

🏫 Contexto

abstrato

Questões parecidas com resolução

Todas as questões de Leitura e interpretação de tabelas e gráficos (de colunas ou barras simples ou múltiplas) referentes a variáveis categóricas e variáveis numéricas

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