Analise a seguinte função em Python que usa recursão: def soma(n): if n == 0: return 0 else: return n +…
Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva
Elaborar algoritmos que envolvam instruções sequenciais, de repetição e de seleção usando uma linguagem de programação.
Fonte: Base Nacional Comum Curricular (MEC).Questão
Analise a seguinte função em Python que usa recursão: def soma(n): if n == 0: return 0 else: return n + soma(n-1). Qual é seu valor para n = 5?
- A) 10
- B) 15
- C) 20
- D) 5
- E) 0
✅ Resposta correta: alternativa B
Resolução passo a passo
- A função soma(n) retorna 0 quando n é 0; caso contrário, retorna n somado ao resultado de soma(n-1).
- Calculando soma(5) = 5 + soma(4).
- soma(4) = 4 + soma(3), então soma(5) = 5 + 4 + soma(3).
- soma(3) = 3 + soma(2), soma(2) = 2 + soma(1), soma(1) = 1 + soma(0).
- soma(0) = 0, logo soma(1) = 1, soma(2) = 3, soma(3) = 6, soma(4) = 10 e soma(5) = 15.
- Assim, o valor é 15, que é a soma dos inteiros de 1 a 5 (5+4+3+2+1).
- A alternativa A (10) está errada, pois corresponde a soma(4), não a soma(5).
- A alternativa C (20) está errada, pois não corresponde a nenhuma soma parcial dos termos da recursão.
- A alternativa D (5) está errada, pois é apenas o valor de n, ignorando as chamadas recursivas.
- A alternativa E (0) está errada, pois é o caso base, que só ocorre quando n é 0.
- Conclusão: o gabarito oficial B está correto.
💡 Dica: Calcule a soma recursivamente para n = 5.
Alternativa por alternativa
O aluno provavelmente contou apenas até o termo 4, somando 4+3+2+1, ou seja, calculou soma(4) em vez de soma(5).
Por que engana: Confundir a soma acumulativa da recursao com multiplicacao ou nao entender a condicao base da funcao recursiva.
A soma de 5+4+3+2+1+0 resulta em 15.
O aluno possivelmente somou valores de forma arbitrária, como 5+4+3+2+6, ou dobrou um resultado parcial sem seguir a regem da recursão.
O aluno acreditou que a função simplesmente retorna o próprio valor de n, ignorando que cada chamada soma n às chamadas seguintes.
O aluno confundiu o caso base (n == 0 retorna 0) com o resultado final, achando que a função sempre retorna 0.
Raio-X da questão
função recursiva
avaliacao
funcoes recursivas basicas · operacoes aritmeticas simples
Revisar conceitos de recursão e funções em Python.
Confundir a soma acumulativa da recursao com multiplicacao ou nao entender a condicao base da funcao recursiva.
pensamento_critico
cientifico
Questões parecidas com resolução
- Qual a saída do código Python a seguir: def recursao(n): if n == 0: return 1 else: return n * recursao(n - 1)…
- Analise o código a seguir: def fatorial(n): return 1 if n==0 else n * fatorial(n-1). Qual o resultado de fatorial(5)?
- Descreva como seria um algoritmo que, utilizando recursão, calcula a soma dos números de 1 a n. Detalhe as etapas e como…
- Analise o pseudocódigo: soma <- 0 para i de 1 até 5 faça soma <- soma + i fimpara No final da execução, qual é o valor…
- Uma função recursiva soma(lista): se lista vazia retorna 0; senão retorna primeiro + soma(resto). Aplicando essa…
- Desenvolva um algoritmo em pseudocódigo que utilize recursão para calcular a soma dos números de 1 a n. Escreva como…
🔎 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
