Analise o pseudocódigo abaixo que processa uma lista L e uma variável acumuladora acc. A chamada inicial é…
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
Analise o pseudocódigo abaixo que processa uma lista L e uma variável acumuladora acc. A chamada inicial é somar(L,0). A função é recursiva de cauda (tail recursion)? funcao somar(L, acc): se L == [] entao retorne acc senao retorne somar(resto(L), acc + primeiro(L))
- A) Não, pois a função utiliza variáveis globais além do acumulador.
- B) Sim, porque a chamada recursiva é feita em um loop.
- C) Não, pois a função soma primeiro os elementos da lista antes de retornar.
- D) Sim. É recursão de cauda.
- E) Sim, mas precisa de mais de uma chamada recursiva para ser eficiente.
✅ Resposta correta: alternativa D
Resolução passo a passo
- Identifique a definição de recursão de cauda: a chamada recursiva é a última operação executada pela função, e o resultado da chamada é devolvido diretamente, sem nenhuma operação pendente depois dela.
- Analise o pseudocódigo. Quando L é vazia, a função retorna acc. Caso contrário, a última ação é retornar somar(resto(L), acc + primeiro(L)). Nada é feito com o resultado da chamada além de devolvê-lo.
- Note que o acumulador acc recebe a soma parcial (acc + primeiro(L)) antes da chamada, de modo que o trabalho já está feito quando a recursão avança. Assim, não há necessidade de guardar contexto na pilha para operações posteriores.
- Logo, a função é recursiva de cauda, e a resposta correta é a alternativa D. O gabarito oficial está correto.
- Por que as outras estão erradas: A) não há variáveis globais, apenas parâmetros; B) a chamada é recursiva, não um loop; C) a soma ocorre a cada chamada, não ao final; E) há apenas uma chamada recursiva, e ela é justamente o que caracteriza a cauda.
💡 Dica: Verifique a definição de recursão de cauda.
Alternativa por alternativa
O aluno acredita que a função depende de variáveis globais, confundindo os parâmetros L e acc com estado externo ao escopo.
O aluno confunde recursão com iteração, achando que a chamada recursiva equivale a um loop, e por isso associa a cauda à repetição.
O aluno imagina que a soma só acontece no final, após percorrer toda a lista, quando na verdade acc + primeiro(L) é calculado a cada passo.
Por que engana: Confundir recursão de cauda com recursão normal, acreditando que a ordem das operações não afeta a eficiência.
A última ação da função é a chamada recursiva sem operações adicionais após o retorno; o acumulador acc acumula o resultado parcial, caracterizando tail recursion.
O aluno pensa que a recursão de cauda exige múltiplas chamadas para ser eficiente, quando na verdade o que a define é a chamada recursiva ser a última operação, em uma única chamada.
Raio-X da questão
recursão de cauda
avaliacao
recursão de cauda · funções recursivas
Revisar o conceito de recursão de cauda em funções.
Confundir recursão de cauda com recursão normal, acreditando que a ordem das operações não afeta a eficiência.
ciencia_tecnologia
pensamento_critico
abstrato
Questões parecidas com resolução
- Crie e descreva um algoritmo, em linguagem simples ou pictográfica, que ajude uma criança a decidir se deve levar um…
- Crie um algoritmo em linguagem oral ou escrita que controle a rega de um vaso por 7 dias: diariamente verificar se…
- Projete em pseudocódigo um algoritmo que reconstrua uma mensagem a partir de pacotes recebidos onde cada pacote contém…
- Elabore em pseudocódigo um algoritmo que, dado um vetor de registros 'tarefas' (descricao, duracao_horas, prioridade) e…
- Elabore em pseudocódigo um algoritmo que, dado um array de registros 'alunos' com campos (nome, notas[4]…
- Projete um algoritmo e descreva as estruturas de dados para implementar operações de desfazer/refazer (undo/redo) em um…
🔎 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
