Olá, Andressa. Como vai?
O seu código utilizando a fórmula matemática da Soma de Gauss ($n \times (n + 1) // 2$) ficou excelente, super limpo e incrivelmente rápido! Do ponto de vista de performance e engenharia de software, a sua solução é a melhor possível para o mundo real, pois ela calcula o resultado em tempo constante (complexidade $O(1)$), sem precisar fazer o computador repetir cálculos.
Contudo, se olharmos para o enunciado do exercício e o nome da atividade ("somando números recursivamente"), o objetivo do capítulo é fazer com que você pratique a Recursividade na programação.
Analisando o script que você compartilhou, houve um pequeno detalhe: o código usou uma abordagem matemática direta e acabou esquecendo de construir a função recursiva solicitada. Além disso, notei que no seu input você guardou o valor na variável numero, mas no cálculo utilizou a letra n, o que geraria um erro de NameError ("name 'n' is not defined") se rodasse o script no terminal.
Para te ajudar a dominar esse conceito e entregar o desafio exatamente como o exercício pediu, vamos entender o que é a recursividade e como construir essa função.
O que é Recursividade?
Na programação, a recursividade acontece quando uma função chama a si mesma dentro do seu próprio bloco de código para resolver subproblemas menores.
Para que uma função recursiva não fique rodando para sempre e trave o computador (gerando o erro de Stack Overflow), ela precisa obrigatoriamente de duas partes:
- Caso Base (Condição de Parada): A situação mais simples possível, onde a função para de se chamar e retorna um valor fixo. No nosso caso, quando $n = 1$, a soma de 1 até 1 é o próprio $1$.
- Caso Recursivo: Onde a função faz a mágica de chamar a si mesma diminuindo o problema. Para somar de 1 até 5, nós pegamos o $5$ e somamos com o resultado da função para o $4$ ($5 + \text{soma}(4)$).
Resolução com Função Recursiva em Python
Veja como fica a estrutura correta para resolver o problema do Paulo utilizando a lógica recursiva e corrigindo o nome das variáveis:
# 1. Criação da função recursiva
def somar_recursivo(n):
# Caso Base: se n for 1, a resposta é o próprio 1
if n == 1:
return 1
# Caso Recursivo: n + a soma do número anterior
else:
return n + somar_recursivo(n - 1)
# 2. Captura do dado do usuário
numero = int(input("Digite um número inteiro positivo: "))
# 3. Validação básica e chamada da função
if numero > 0:
resultado = somar_recursivo(numero)
print(f"A soma de 1 até {numero} é {resultado}.")
else:
print("Por favor, digite um número maior que zero.")
Como o Python processa isso na memória?
Se o usuário digitar 4, o Python vai abrindo "caixas" de cálculo na memória (chamadas de pilha de execução):
somar_recursivo(4) devolve 4 + somar_recursivo(3)somar_recursivo(3) devolve 3 + somar_recursivo(2)somar_recursivo(2) devolve 2 + somar_recursivo(1)somar_recursivo(1) atinge o Caso Base e devolve 1.
Agora o Python volta fechando as caixas de baixo para cima fazendo as somas: $1 + 2 = 3 \rightarrow 3 + 3 = 6 \rightarrow 6 + 4 = 10$. O programa encerra e exibe o resultado final: 10.
Dominar a recursividade é um passo gigante na jornada de qualquer programador, pois essa lógica é a base para entender estruturas de dados mais complexas no futuro, como árvores e grafos.
Parabéns pela postagem e por trazer um exemplo perfeito da fórmula de Gauss para o fórum!
Espero que possa ter lhe ajudado!