1
resposta

Faça como eu fiz: somando números recursivamente

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

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:

1. O Caso Base

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

2. O Caso Recursivo

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:

  • 7 + soma_recursiva(6)
  • 7 + 6 + soma_recursiva(5)
  • 7 + 6 + 5 + soma_recursiva(4)
  • ... até chegar em + 1.

Uma sugestão de boa prática (Garantia de segurança)

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!