Olá, Estudante. Como vai?
Seu código ficou excelente e funciona perfeitamente! A implementação da recursividade em Python é um conceito que costuma dar um "nó" na cabeça de quem está começando, mas você demonstrou ter entendido muito bem a estrutura necessária.
A lógica da sua função soma_recursiva está impecável porque ela atende às duas regras fundamentais de qualquer estrutura recursiva:
O trecho if n == 1: return 1 é o seu caso base. Ele é a parte mais importante da função, pois define a condição de parada. Sem ele, a função continuaria chamando a si mesma infinitamente até estourar o limite de memória do Python (Stack Overflow).
No bloco else: return n + soma_recursiva(n - 1), você faz a função chamar a si mesma diminuindo o valor de n a cada passo. Como você testou com o número 7, o Python empilhou as operações da seguinte forma até obter o resultado 28:
O seu código funciona lindamente para números inteiros positivos a partir de 1. No entanto, se um usuário rodar o programa e digitar o número 0 ou um número negativo (como -5), o código vai quebrar em uma repetição infinita, pois o n vai diminuindo para -6, -7, -8 e nunca atingirá o caso base n == 1.
Para tornar o seu algoritmo ainda mais robusto contra entradas inesperadas, uma boa prática é ajustar o teste do caso base para englobar números menores ou iguais a 1:
def soma_recursiva(n):
if n <= 1:
return n
else:
return n + soma_recursiva(n - 1)
Dessa forma, se alguém digitar 0, o programa retorna 0 imediatamente com segurança.
Parabéns pelo domínio dos conceitos de funções e estruturas condicionais no Python. Continue praticando!
Espero que possa ter lhe ajudado!