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
- Um programador deseja criar uma função recursiva que retorne a soma dos elementos de uma lista. Como deve ser a…
- Em pseudocódigo, qual deve ser o caso base de um algoritmo recursivo que conta elementos de uma lista L (variável L)…
- Escreva um algoritmo em pseudocódigo que utilize recursão para calcular a soma de uma lista de números.
- Qual seria o resultado de um algoritmo que utiliza recursão para somar os elementos de uma lista de números?
- Ao criar uma função que utiliza recursão para somar todos os elementos de uma lista, qual é a base dessa função?
- Descreva como você abordaria a criação de uma função recursiva para calcular a soma de elementos em uma lista. Inclua…
🔎 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
