Uma banca de feira registra em uma lista o preço de cada cesta vendida durante a manhã. Para calcular o total…
Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva
Construir soluções de problemas usando a técnica de recursão e automatizar tais soluções usando uma linguagem de programação.
Fonte: Base Nacional Comum Curricular (MEC).Questão
Uma banca de feira registra em uma lista o preço de cada cesta vendida durante a manhã. Para calcular o total arrecadado, foi criada a função abaixo, ainda incompleta. funcao somar(vendas, posicao) se __________ retorne __________ fim_se retorne vendas[posicao] + somar(vendas, posicao + 1) fim_funcao A primeira chamada é somar(vendas, 0). Qual preenchimento faz a função somar todos os valores da lista usando recursão, sem tentar acessar uma posição inexistente?
- A) posicao = tamanho(vendas); retornar vendas[posicao]
- B) posicao = tamanho(vendas) - 1; retornar 0
- C) posicao = 0; retornar tamanho(vendas) + 1
- D) posicao = tamanho(vendas); retornar 1
- E) posicao = tamanho(vendas); retornar 0
✅ Resposta correta: alternativa E
Resolução passo a passo
- a função percorre a lista posição por posição, somando vendas[posicao] com o resultado da chamada seguinte. Para não acessar uma posição inexistente, a recursão precisa de um caso base que pare exatamente quando a lista acaba. Passo 2: a última posição válida é tamanho(vendas) - 1, então quando posicao chega a tamanho(vendas) não há mais valores a somar. Passo 3: na condição do se, deve-se colocar posicao = tamanho(vendas), que é o momento em que a lista termina. Passo 4: nesse caso base, retorne 0, pois não há mais nada a acumular e o elemento inexistente não é acessado. Passo 5: por que as outras estão erradas. Na A, retornar vendas[posicao] com posicao igual ao tamanho acessa uma posição inexistente. Na B, a condição posicao = tamanho - 1 interrompe a recursão antes do último elemento, que fica fora da soma. Na C, posicao = 0 dispara já na primeira chamada e retorna tamanho + 1, que não é a soma dos valores. Na D, retornar 1 faz cada passo somar 1 em vez do preço da cesta, contando itens em vez de somar valores. Passo 6: portanto a alternativa E é a única que completa a função corretamente, e coincide com o gabarito oficial.
💡 Dica: A recursão deve parar quando a posição atingir o tamanho da lista, retornando zero.
Alternativa por alternativa
Acredita que o caso base deve ser disparado quando posicao já alcança o tamanho e que é válido acessar vendas[tamanho], além de retornar esse valor como caso final.
Confunde o índice do último elemento com o ponto de parada da recursão, o que faz o último valor da lista ser ignorado na soma.
Acha que a condição de parada deve ser testada na posição inicial (zero) e que o retorno deve ser o tamanho da lista somado a 1, sem relação com a soma dos preços.
Acredita que o valor do caso base pode ser qualquer elemento neutro de contagem, como 1, e não percebe que a soma precisa usar o elemento neutro da adição, que é 0.
Ao alcançar o fim da lista, a função retorna 0 e as chamadas anteriores somam os valores já acessados.
Raio-X da questão
Caso-base em recursão
Identificar a condiç
Índices e tamanho de listas · Soma e valor neutro zero
Recursão sobre listas
Usar a última posição como caso-base e tentar acessar novamente um elemento inexistente.
Persistência na análise passo a passo
Exemplo cotidiano si
Questões parecidas com resolução
- Em uma estufa, um programa analisa a umidade de cinco canteiros, na ordem indicada, e aciona a irrigação quando a…
- Na feira cultural da escola, um grupo criou uma lista com as músicas que tocarão no palco: abertura, apresentação de…
- Na horta da escola, foram registradas as umidades do solo em uma lista: [42, 37, 35]. Uma função recursiva verifica se…
- Pesquisadores acompanham a qualidade da água em estações de um rio e precisam automatizar a leitura dos sensores. No…
- Por que uma lâmpada apagada pode continuar sem reparo por vários dias? Na central de atendimento de um município…
- Objetos esquecidos nas estações de metrô passam por triagem antes de serem encaminhados ao setor de achados e perdidos…
Todas as questões de Programação - Programação com listas e recursã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
