Recursão com acumulador
Em código real, funções recursivas aparecem em problemas como percorrer árvores de arquivos ou calcular totais de dados aninhados. Sem um acumulador, cada chamada recursiva precisa esperar o retorno das anteriores para somar, o que gasta memória da pilha. Usar um parâmetro que carrega o resultado parcial evita isso e torna a lógica mais clara, especialmente em linguagens que otimizam chamadas de cauda.
O PROBLEMA
Crie somar_lista(lista, ac=0) recursiva para somar elementos.
EXEMPLO
somar_lista([1,2,3,4,5]) → 15
SOBRE O CONCEITO
A função somar_lista(lista, ac=0) usa recursão com acumulador: o parâmetro ac guarda a soma parcial. A cada chamada, somamos o primeiro elemento ao ac e passamos o restante da lista (lista[1:]) na recursão. O erro mais comum é não tratar a lista vazia: sem um if que verifique len(lista) == 0 e retorne ac, a recursão nunca termina, porque a lista nunca diminui e o Python lança RecursionError. Por isso, sempre estabeleça um caso base que retorne o acumulador quando a lista estiver vazia.
RESOLUÇÃO