1
resposta

[Dúvida] Não sei se ficou muito eficiente, mas queria saber se esta correto

def somando_recursivamente(n):
    lista = 0
    lista = [n, ]
    while True:
        lista.append(n-1)
        n = n - 1
        if n == 0:
            break
    soma = sum(lista)
    return soma
resultado = int(input('Digite um numero: '))
print(f'A soma de 1 até {resultado} é {somando_recursivamente(resultado)}')
1 resposta

Oi, Tiago! Tudo bem?

Indo direto ao ponto: o seu código chega ao resultado correto, mas ele não é uma função recursiva.

Na programação, uma função recursiva é aquela que chama a si mesma dentro do seu próprio corpo para resolver partes menores do problema. O seu código utilizou uma estrutura de repetição (while), o que o caracteriza como uma solução iterativa.

Uma análise rápida para te ajudar a diferenciar:

1. O que você fez (Abordagem iterativa)

Você criou uma lista, preencheu ela usando um laço while e depois somou os valores.

  • Vantagem: É fácil de entender o fluxo linear.
  • Ponto de atenção: Gastou memória extra criando uma lista desnecessária apenas para somar os números depois.

2. O que o exercício pediu (Abordagem recursiva)

Na recursão, em vez de um "loop", a função "pergunta" o resultado para ela mesma com um valor menor, até chegar na base (que é o 1).

Veja a diferença na estrutura:

def somando_recursivamente(n):
    # Condição de parada (Base Case)
    if n == 1:
        return 1
    
    # Chamada recursiva: a função chama a si mesma
    return n + somando_recursivamente(n - 1)

resultado = int(input('Digite um numero: '))
print(f'A soma de 1 até {resultado} é {somando_recursivamente(resultado)}')

Por que a sua não é recursiva?

Para ser recursiva, você teria que ver a linha somando_recursivamente(...) dentro do bloco de código da própria função. No seu caso, você usou o while para controlar a repetição.

Espero ter ajudado.

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