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
- Descreva como você abordaria a criação de uma função recursiva para calcular a soma de elementos em uma lista. Inclua…
- Descreva como você poderia utilizar uma função recursiva para somar todos os elementos de uma lista de números inteiros.
- Ao criar uma função que utiliza recursão para somar todos os elementos de uma lista, qual é a base dessa função?
- Desenvolva uma função recursiva que calcule a soma dos números em uma lista. Explique o funcionamento da função.
- Como a recursão pode ser utilizada para somar todos os elementos 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?
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
