Em uma aula de Computação, uma turma analisou um algoritmo que reorganiza uma lista de inteiros por meio de…
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
Em uma aula de Computação, uma turma analisou um algoritmo que reorganiza uma lista de inteiros por meio de chamadas recursivas. Diferentemente da soma prefixada usual, o algoritmo abaixo processa primeiro o restante da lista e, ao retornar, acrescenta ao primeiro elemento o último valor já produzido. func soma_prefixos(L): se L == [] então retorne [] senao R := soma_prefixos(resto(L)) se R == [] então retorne [primeiro(L)] senao retorne concatenar([primeiro(L) + ultimo(R)], R) A função concatenar([x], R) coloca o elemento x no início da lista R. Considerando exatamente as regras de execução apresentadas no texto-base, qual lista é retornada pela chamada soma_prefixos([2, -1, 4])?
- A) [6, 3, 4]
- B) [6, 4, 3]
- C) [2, 1, 5]
- D) [2, 3, 7]
- E) [4, 3, 6]
✅ Resposta correta: alternativa A
Resolução passo a passo
- Resolvo a chamada soma_prefixos([2, -1, 4]) seguindo as regras do texto-base, começando pela chamada mais interna. Passo 2: soma_prefixos([4]) chama soma_prefixos([]), que retorna []. Como R é [], o resultado é [primeiro([4])] = [4]. Passo 3: soma_prefixos([-1, 4]) recebe R = [4]. Como R não é vazio, calcula primeiro(L) + ultimo(R) = -1 + 4 = 3 e concatena [3] com R, obtendo [3, 4]. Passo 4: soma_prefixos([2, -1, 4]) recebe R = [3, 4]. Calcula primeiro(L) + ultimo(R) = 2 + 4 = 6 e concatena [6] com R, obtendo [6, 3, 4]. Passo 5: Conclusão: a lista retornada é [6, 3, 4], alternativa A, que coincide com o gabarito oficial. Passo 6: Por que as outras estão erradas: B inverte a ordem de inserção do novo elemento, E inverte a leitura da lista final, C corresponde à soma prefixada usual da esquerda para a direita, e D não aplica a regra ao primeiro elemento da lista.
💡 Dica: Analise o algoritmo e aplique-o à lista fornecida.
Alternativa por alternativa
A chamada com [2, -1, 4] é resolvida a partir das listas menores. Para [4], o restante é vazio, portanto o retorno é [4]. Para [-1, 4], soma-se -1 ao último elemento de [4], obtendo [3, 4]. Finalmente, para [2, -1, 4], soma-se 2 ao último elemento de [3, 4], que é 4, e o resultado é [6, 3, 4].
O aluno acredita que o novo valor deve ser colocado no fim da lista retornada, e não no início, como indica a função concatenar([x], R). Ele ainda pode ter feito a conta corretamente, mas montou a lista na ordem errada.
Por que engana: Confundir a ordem das operações e somar os elementos de forma incorreta, resultando em uma lista errada.
O aluno aplica a soma prefixada usual, acumulando da esquerda para a direita (2, 2 + (-1) = 1, 1 + 4 = 5), o que contraria a instrução de que o algoritmo processa primeiro o restante da lista.
O aluno calcula corretamente os valores -1 + 4 = 3 e 3 + 4 = 7, mas não aplica a regra ao primeiro elemento e mantém o 2 original, ignorando que o primeiro elemento também deve receber a soma com o último valor produzido.
O aluno obtém os valores certos, mas lê ou escreve a lista resultante de trás para frente, invertendo a ordem final dos elementos em relação à saída produzida pelas chamadas recursivas.
Raio-X da questão
algoritmo recursivo
avaliacao
funções recursivas · listas em programação
Revisar como funcionam algoritmos recursivos e somas prefixadas.
Confundir a ordem das operações e somar os elementos de forma incorreta, resultando em uma lista errada.
ciencia_tecnologia
pensamento_critico
abstrato
Questões parecidas com resolução
- Para inscrever estudantes no clube de leitura, a biblioteca da escola usa um formulário digital. O formulário solicita…
- Em uma planilha com várias turmas, uma mesma fórmula foi inserida na primeira linha e copiada para as demais para manter…
- Uma turma quer registrar em ordem as etapas para calcular a média das notas em um programa educacional. — Que recurso de…
- Em uma atividade de programação, o estudante percebe que vai repetir a mesma conta várias vezes para diferentes valores…
- No terminal de empréstimo de bicicletas de um parque urbano, cada devolução é registrada em um painel de leitura. O…
- Em uma frase, defina o que é um algoritmo em computaçã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
