GeraProva GeraProva Provas com IA para professores do Brasil
Computação9º anoBNCC EF69CO02Fácil⏱ medio

Em uma atividade de organização de dados, uma função recebe uma lista e constrói outra lista. Se a lista…

Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva

Habilidade BNCC EF69CO02

Elaborar algoritmos que envolvam instruções sequenciais, de repetição e de seleção usando uma linguagem de programação.

Fonte: Base Nacional Comum Curricular (MEC).

Questão

Em uma atividade de organização de dados, uma função recebe uma lista e constrói outra lista. Se a lista recebida estiver vazia, a função devolve uma lista vazia. Caso contrário, ela retira o primeiro elemento, aplica-se novamente ao restante da lista e, ao final, acrescenta o primeiro elemento retirado. Essa operação pode ser representada pelo pseudocódigo: funcao inverter(L): se L == [] entao retorne [] senao retorne concatenar(inverter(resto(L)), [primeiro(L)]) A função concatenar une as duas listas preservando a ordem de seus elementos. Considerando o funcionamento da recursão e a lista L = [1, 2, 3, 4], qual lista será retornada pela função inverter(L)?

  1. A) [1, 2, 3, 4]
  2. B) [4, 3, 2, 1]
  3. C) [2, 3, 4, 1]
  4. D) [3, 4, 1, 2]
  5. E) [4, 1, 2, 3]

✅ Resposta correta: alternativa B

Resolução passo a passo

  1. A função inverter(L) retorna []. Se a lista estiver vazia; caso contrário, concatena o resultado de inverter(resto(L)) com a lista unitária [primeiro(L)].
  2. Aplicando a L = [1, 2, 3, 4]: primeiro(L) = 1 e resto(L) = [2, 3, 4]. Logo inverter([1,2,3,4]) = concatenar(inverter([2,3,4]), [1]).
  3. inverter([2,3,4]) = concatenar(inverter([3,4]), [2]).
  4. inverter([3,4]) = concatenar(inverter([4]), [3]).
  5. inverter([4]) = concatenar(inverter([]), [4]) = concatenar([], [4]) = [4].
  6. Voltando: inverter([3,4]) = [4] + [3] = [4, 3]; inverter([2,3,4]) = [4, 3] + [2] = [4, 3, 2]; inverter([1,2,3,4]) = [4, 3, 2] + [1] = [4, 3, 2, 1].
  7. Portanto a resposta correta é a alternativa B, [4, 3, 2, 1], que é a lista original invertida, como esperado de uma função de inversão.
  8. Por que as outras estão erradas: A) é a lista original sem inversão; C) e D) são rotações da lista original, que surgiriam de concatenar o primeiro elemento antes do restante; E) mistura a ordem dos elementos e não corresponde a nenhuma aplicação correta da recursão.

💡 Dica: Analise a função recursiva e a lista fornecida.

Alternativa por alternativa

A Erradaerro: Conceituala que mais engana

Acredita que a função apenas devolve a lista original, ignorando que a concatenação ocorre com o primeiro elemento colocado no final da chamada recursiva.

Por que engana: Confundir o número de chamadas da função com o resultado final da lista invertida, focando apenas na contagem de chamadas em vez do retorno da função.

B Correta

A função faz chamadas sucessivas com [2, 3, 4], [3, 4], [4] e []. Ao retornar da recursão, acrescenta os primeiros elementos retirados na ordem inversa: 4, depois 3, depois 2 e, por fim, 1. Portanto, a lista retornada é [4, 3, 2, 1].

C Erradaerro: Procedimental

Imagina que o primeiro elemento é movido para o fim da lista de uma única vez, sem considerar que a recursão aplica o mesmo processo ao restante, o que gera a inversão completa.

D Erradaerro: Procedimental

Aplica a recursão de forma incompleta, deslocando apenas parte dos elementos e tratando o restante da lista como se fosse mantido na ordem original.

E Erradaerro: Procedimental

Erra ao resolver as chamadas recursivas, misturando a ordem dos elementos na concatenação e não respeitando que o resultado de inverter(resto(L)) vem antes de [primeiro(L)].

Raio-X da questão

Dificuldade Fá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✍️ interpretativa🧩 desafio
🎯 Conceito central

função recursiva

📌 Objetivo

avaliacao

🧱 Pré-requisitos

função recursiva · listas em pseudocódigo

📚 Reveja

Revisar conceitos de recursão e manipulação de listas.

⚠️ Erro mais comum

Confundir o número de chamadas da função com o resultado final da lista invertida, focando apenas na contagem de chamadas em vez do retorno da função.

🌎 Tema transversal

ciencia_tecnologia

🤝 Socioemocional

pensamento_critico

🏫 Contexto

abstrato

Questões parecidas com resolução

Todas as questões de Programação - Linguagem de programaçã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.