Considere a função recursiva em pseudocódigo: função soma(L): se L == [] retorne 0; senão retorne L[0] +…
Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva
Utilizar conceitos iniciais de uma linguagem de programação na implementação de algoritmos escritos em linguagem corrente e/ou matemática.
Fonte: Base Nacional Comum Curricular (MEC).Questão
Considere a função recursiva em pseudocódigo: função soma(L): se L == [] retorne 0; senão retorne L[0] + soma(L[1:]). Calcule soma([2, 4, 6]).
- A) soma([2, 4, 6]) = 14; a função deveria somar todos os pares twice.
- B) 12
- C) soma([2, 4, 6]) = 6; soma é sempre o primeiro elemento da lista.
- D) soma([2, 4, 6]) = 18; a função deve incluir um número extra 6.
- E) soma([2, 4, 6]) = 10; a soma só considera o último elemento.
✅ Resposta correta: alternativa B
Resolução passo a passo
- A função soma(L) retorna 0 quando a lista é vazia e, caso contrário, retorna o primeiro elemento L[0] somado ao resultado de soma aplicada ao restante da lista L[1:].
- Para L = [2, 4, 6], temos soma([2, 4, 6]) = 2 + soma([4, 6]).
- Em seguida, soma([4, 6]) = 4 + soma([6]), e soma([6]) = 6 + soma([]).
- Como soma([]) = 0 por definição, temos soma([6]) = 6 + 0 = 6, então soma([4, 6]) = 4 + 6 = 10 e soma([2, 4, 6]) = 2 + 10 = 12.
- Portanto a resposta correta é 12, alternativa B, que coincide com o gabarito oficial.
- A alternativa A está errada porque o resultado 14 não corresponde ao cálculo da recursão, e a justificativa de dobrar valores não existe na definição da função.
- A alternativa C está errada porque a função não retorna apenas o primeiro elemento; a chamada recursiva soma(L[1:]) também é somada.
- A alternativa D está errada porque a função não inclui nenhum 6 extra; cada elemento da lista é usado exatamente uma vez.
- A alternativa E está errada porque o valor 10 corresponde a somar apenas 4 e 6, ignorando o primeiro elemento 2, o que a definição da função não faz.
💡 Dica: Aplique a função recursiva passo a passo.
Alternativa por alternativa
O aluno acredita que os elementos da lista são contados duas vezes na recursão, e por isso dobra parte da soma para chegar a 14.
Caso base retorna 0; a recursão soma os elementos: 2 + 4 + 6 = 12.
O aluno entende que a função devolve apenas L[0] e ignora a chamada recursiva soma(L[1:]), como se a recursão não acumulasse valores.
O aluno adiciona um termo a mais, repetindo o último valor 6 ao somatório, provavelmente por descuido ao contar os passos da recursão.
Por que engana: Confundir a soma total dos elementos com a soma de apenas um ou dois elementos da lista, resultando em um valor incorreto.
O aluno pula o primeiro elemento L[0] e soma apenas os elementos restantes 4 e 6, o que resulta em 10.
Raio-X da questão
função recursiva
avaliacao
função recursiva · soma de elementos de lista
Revisar conceitos de funções recursivas e suas aplicações.
Confundir a soma total dos elementos com a soma de apenas um ou dois elementos da lista, resultando em um valor incorreto.
ciencia_tecnologia
pensamento_critico
abstrato
Questões parecidas com resolução
- Leia o trecho abaixo de um algoritmo recursivo que soma elementos de uma lista: fun soma(L): se L == [] então retorne 0…
- Dado o pseudocódigo: soma ? 0; para i de 1 até 6 faça: soma ? soma + i. Ao final do laço, qual é o valor armazenado em…
- Considere o pseudocódigo: soma ? 0; para i de 1 até 5 faça: soma ? soma + 2; fim. Qual o valor final de soma após a…
- Considere o pseudocódigo: soma ? 0; para i de 1 até 4: soma ? soma + i; escreva(soma). Qual será a saída exibida?
- Em uma atividade de programação aplicada ao controle de materiais de uma escola, a lista L representa as quantidades…
- Em uma atividade de Matemática, uma turma analisa um algoritmo que calcula a soma dos números inteiros consecutivos a…
🔎 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
