GeraProva GeraProva Provas com IA para professores do Brasil
Computação7º anoBNCC EF69CO04Média⏱ medio

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

Habilidade BNCC EF69CO04

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?

  1. A) def soma(lista): return 0 if not lista else lista[0] + soma(lista[1:])
  2. B) def soma(lista): return [] if not lista else lista[0] + soma(lista[1:])
  3. C) def soma(lista): return lista[0] if not lista else soma(lista[1:])
  4. D) def soma(lista): return 1 if not lista else lista[0] * soma(lista[1:])
  5. E) def soma(lista): return 0 if lista else lista[0] + soma(lista[1:])

✅ Resposta correta: alternativa A

Resolução passo a passo

  1. 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

A Correta

Essa é a forma correta de somar recursivamente uma lista.

B Erradaerro: Conceituala que mais engana

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.

C Erradaerro: Procedimental

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.

D Erradaerro: Conceitual

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.

E Erradaerro: Atenção

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

Dificuldade Média
Bloom Criar
Leitura medio
Discriminação alto
Peso pedagógico alto
Autonomia do enunciado completo
Cobertura da habilidade unica
🧪 Simulado🩺 Diagnóstico🧮 Exige cálculo🏠 Cotidiano🔗 Interdisciplinar⭐ Representativa✍️ direta🧩 desafio
🎯 Conceito central

função recursiva

📌 Objetivo

avaliacao

🧱 Pré-requisitos

funcoes recursivas basicas · manipulacao de listas

📚 Reveja

Revisar a estrutura de funções recursivas em programação.

⚠️ Erro mais comum

Confundir a condicao base da recursao, retornando tipos ou valores incorretos que nao correspondem a soma neutra.

🤝 Socioemocional

pensamento_critico

🏫 Contexto

abstrato

Questões parecidas com resolução

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

Ocorreu um erro inesperado. Recarregar X

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.