Projete em pseudocódigo um algoritmo recursivo compress_consecutivos(L) que recebe uma lista L e retorna uma…
Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva
Construir e simular algoritmos, de forma independente ou em colaboração, que resolvam problemas simples e do cotidiano com uso de sequências, seleções condicionais e repetições de instruções.
Fonte: Base Nacional Comum Curricular (MEC).Questão
Projete em pseudocódigo um algoritmo recursivo compress_consecutivos(L) que recebe uma lista L e retorna uma nova lista onde sequências de elementos consecutivos iguais são reduzidas a um único elemento. Exemplo: [a,a,b,b,b,c] -> [a,b,c]. Use operações sobre cabeça/cauda e concatenação.
✍️ Questão dissertativa: veja abaixo a resposta esperada e a explicação.
Resposta esperada
funcao compress_consecutivos(L): se L == [] entao retorne [] senao se comprimento(L) == 1 entao retorne [L[0]] senao cabeca <- L[0] proximo <- L[1] resto <- sublista(L,1, fim) if cabeca == proximo entao // omite cabeca duplicado e continua sobre resto retorne compress_consecutivos(resto) senao // mantém cabeca e concatena com resultado recursivo return concatenar([cabeca], compress_consecutivos(resto)) Observações: o caso base lida com lista vazia e lista unitária. A comparação é somente entre elementos consecutivos; concatenar insere cabeca antes do resultado recursivo.
Explicação
O algoritmo utiliza recursão para percorrer a lista, tratando primeiro os casos base de lista vazia e lista com um único elemento. Ao comparar elementos consecutivos, ele decide se deve omitir duplicatas ou manter o elemento atual, garantindo que apenas um de cada sequência de iguais seja incluído na nova lista. A concatenação é feita de forma a preservar a ordem dos elementos, resultando em uma lista final sem repetições consecutivas.
Raio-X da questão
algoritmo recursivo
fixacao
pseudocódigo · recursão
Revisar conceitos de recursão e manipulação de listas.
O aluno pode confundir a lógica de recursão, não conseguindo identificar corretamente quando os elementos são iguais e, portanto, não reduzindo a lista como esperado.
ciencia_tecnologia
criatividade
abstrato
Questões parecidas com resolução
- Projete em pseudocódigo uma função recursiva remover_unicos(L) que recebe uma lista L de inteiros e retorna uma nova…
- Projete em pseudocódigo uma função recursiva subsequencias(L) que recebe uma lista L de inteiros e retorna a lista de…
- Projete um algoritmo em pseudocódigo que receba uma lista L de n inteiros (com repetições possíveis) e retorne uma nova…
- Projete uma função recursiva em pseudocódigo flatten(L) que recebe uma lista L que pode conter inteiros e sublistas…
- Projete em pseudocódigo uma função recursiva agrupar_por_inicial(L) que recebe uma lista L de nomes (strings) e retorna…
- Projete em pseudocódigo uma função recursiva duplicar(L) que recebe uma lista L de inteiros e retorna uma nova lista em…
🔎 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
