Um programador deseja criar uma função recursiva que retorne a soma dos elementos de uma lista. Como deve ser…
Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva
Construir soluções de problemas usando a técnica de decomposição e automatizar tais soluções usando uma linguagem de programação.
Fonte: Base Nacional Comum Curricular (MEC).Questão
Um programador deseja criar uma função recursiva que retorne a soma dos elementos de uma lista. Como deve ser a estrutura básica dessa função?
- A) def soma(lista): return 0 if not lista else lista[0] + soma(lista[1:])
- B) def soma(lista): return [] if not lista else lista[0] + soma(lista[1:])
- C) def soma(lista): return lista[0] if not lista else soma(lista[1:])
- D) def soma(lista): return 1 if not lista else lista[0] * soma(lista[1:])
- E) def soma(lista): return 0 if lista else lista[0] + soma(lista[1:])
✅ Resposta correta: alternativa A
Resolução passo a passo
- A função recursiva para somar uma lista precisa de dois elementos: um caso base, que é a lista vazia, e um passo recursivo, que soma o primeiro elemento ao resultado da soma do restante da lista. Passo 2: Na alternativa A, se a lista está vazia (not lista é verdadeiro), a função retorna 0, que é o elemento neutro da soma. Passo 3: Se a lista não está vazia, a função retorna lista[0] + soma(lista[1:]), que soma o primeiro elemento com a soma do resto, reduzindo o problema a cada chamada até chegar à lista vazia. Passo 4: Exemplo: soma([2, 3]) = 2 + soma([3]) = 2 + (3 + soma([])) = 2 + (3 + 0) = 5. Passo 5: A alternativa B está errada porque retorna uma lista vazia no caso base, e somar inteiro com lista gera erro de tipo. A alternativa C está errada porque descarta o primeiro elemento no passo recursivo e tenta acessar lista[0] quando a lista está vazia. A alternativa D está errada porque usa multiplicação em vez de soma, calculando um produto e não uma soma. A alternativa E está errada porque a condição do caso base está invertida: quando a lista não está vazia, retorna 0, e quando está vazia tenta acessar lista[0], gerando erro. Passo 6: Portanto, o gabarito A está correto e a estrutura básica é o caso base com o elemento neutro 0 seguido do passo recursivo somando o primeiro elemento ao resto da lista.
💡 Dica: Pense na base e no caso recursivo da função.
Alternativa por alternativa
Essa é a forma correta de somar recursivamente uma lista.
O aluno acredita que o caso base deve retornar uma lista vazia, confundindo o tipo do retorno com o do elemento neutro da soma, que é o número 0.
Por que engana: Confundir a condicao base da recursao, retornando tipos ou valores incorretos que nao correspondem a soma neutra.
O aluno acha que a soma pode ser reduzida ao primeiro elemento e que a recursão pode simplesmente descartar lista[0], sem acumulá-lo ao resultado.
O aluno confunde o padrão de recursão de soma com o de produto, usando multiplicação e elemento neutro 1 como se fosse uma soma.
O aluno lê 'if lista' como se fosse 'se a lista estiver vazia', invertendo a condição do caso base, e não percebe que lista[0] falhará quando a lista estiver vazia.
Raio-X da questão
função recursiva
avaliacao
funcoes recursivas basicas · manipulacao de listas
Revisar a estrutura de funções recursivas em programação.
Confundir a condicao base da recursao, retornando tipos ou valores incorretos que nao correspondem a soma neutra.
pensamento_critico
abstrato
Questões parecidas com resolução
- Escreva um algoritmo em linguagem descritiva que, recebendo uma lista de arestas (edge list) de um grafo com V vértices…
- Ao decompor um algoritmo complexo, que documentação técnica mínima deve acompanhar cada função para permitir integração…
- Qual vantagem direta de transformar uma variável global em parâmetro de função ao decompor um algoritmo que manipula…
- Projete a decomposição de alto nível de um algoritmo que gera relatórios mensais de presença por aluno a partir de dados…
- Quais são, em ordem, as três etapas essenciais ao decompor um algoritmo complexo para facilitar sua resolução?
- Ao decompor um algoritmo que calcula estatísticas de temperatura, qual subtarefa trata de identificar e excluir outliers…
Todas as questões de Estratégias de solução de problemas - Decomposiçã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
