Projete em pseudocódigo uma função recursiva rotacionar_direita(L, k) que recebe uma lista L e um inteiro k =…
Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva
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
Projete em pseudocódigo uma função recursiva rotacionar_direita(L, k) que recebe uma lista L e um inteiro k = 0 e retorna nova lista com os elementos rotacionados k posições à direita. Use apenas operações de lista básicas (cabeça/cauda, len, concatenar) e evite laços iterativos.
✍️ Questão dissertativa: veja abaixo a resposta esperada e a explicação.
Resposta esperada
funcao rotacionar_direita(L,k): se L == [] entao retorne L n <- len(L) r <- k mod n se r == 0 entao retorne L /* mover último elemento para frente r vezes recursivamente */ funcao mover_uma(L): se L == [] ou len(L) == 1 entao retorne L ultimo <- L[len(L)-1] init <- L[0:len(L)-1] retorne concatenar([ultimo], init) se r == 1 entao retorne mover_uma(L) senao return rotacionar_direita(mover_uma(L), r-1) Observações: primeiro reduzimos k por modulo n. A operação mover_uma coloca o último elemento na cabeça; aplicando-a r vezes obtemos a rotação à direita por r posições. A solução é recursiva e usa apenas operações básicas de lista. Complexidade: O(r·n) no método direto; pode ser otimizada concatenando sublistas em O(n) usando divisão em duas fatias quando necessário.
Explicação
A solução utiliza recursão para mover o último elemento da lista para a frente repetidamente, o que efetivamente realiza a rotação à direita. O uso do operador módulo permite otimizar o número de rotações, evitando operações desnecessárias quando k é maior que o tamanho da lista. Além disso, a função respeita as restrições de usar apenas operações básicas de lista, garantindo a simplicidade e eficiência do algoritmo.
Raio-X da questão
função recursiva
fixacao
funções recursivas · operações com listas
Revisar conceitos de listas e recursão em programação.
O aluno pode confundir a lógica de rotação, tentando usar laços iterativos em vez de recursão.
ciencia_tecnologia
criatividade
abstrato
Questões parecidas com resolução
- Pesquisadores acompanham há três anos o avanço de resíduos flutuantes em um trecho de rio urbano. Em uma simulação para…
- — O caminhão não pode ir a uma rua em dia errado — explicou a agente de limpeza durante a reunião do bairro. O município…
- — Nem toda travessia precisa emitir som ao mesmo tempo — explicou a técnica responsável pelos sinais acessíveis da…
- Na porta de um centro comunitário, voluntários recebem pedidos de doação e querem reduzir erros na hora de separar e…
- Em pseudocódigo, para um loop 'enquanto' que percorre índices i iniciando em 1 para acessar lista[1..n], qual condição…
- Projete em pseudocódigo um algoritmo que valide a força de uma senha recebida como dado: a senha deve ter pelo menos 8…
🔎 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
