Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

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

def titulo(txt):
    print('=' * len(txt))
    print(txt)
    print('=' * len(txt))

def perguntar_numero():
    while True:
        try:    
            x = int(input('Digite um número: '))
            return x
        except ValueError:
            print('Número inválido, tente novamente.')

def soma_recursiva(numero):
    if numero == 1:
        return 1
    return numero + soma_recursiva(numero - 1)


def main():
    titulo('SOMANDO NÚMEROS RECURSIVAMENTE')
    numero = perguntar_numero()
    total = soma_recursiva(numero)
    print(f'A soma de 1 até {numero} é: {total}')


if __name__ == '__main__':
    main()
1 resposta

Oi, Giovanni. Tudo bem com você?

Fiquei muito contente em ver sua resolução para a atividade. O seu código executa com perfeição toda a proposta do exercício e a lógica recursiva foi aplicada de forma correta ao definir muito bem a condição de parada quando o número atinge um. Além disso, a adição de funções acessórias para estilizar o título e tratar possíveis erros de digitação do usuário enriqueceu bastante a legibilidade e a usabilidade do programa principal.

Como uma dica interessante para expandir o conhecimento, é válido pontuar que o Python possui um limite padrão para chamadas recursivas sucessivas na pilha de execução. Caso a função soma_recursiva recebesse um valor inteiro muito alto, por exemplo, o número mil e duzentos, a linguagem dispararia uma exceção do tipo RecursionError para proteger a memória do sistema contra estouro de pilha.

Pensando nessa característica da linguagem sobre profundidade máxima de recursão, como você imagina que poderíamos reescrever essa lógica de acumulação utilizando uma abordagem iterativa convencional?

Parabéns pelo excelente projeto construído e obrigado por compartilhar seu conhecimento conosco, saiba que o fórum está sempre à sua disposição.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!