single
Recursão
Deslize para mostrar o menu
Uma função recursiva é uma função que chama a si mesma para resolver um problema dividindo-o em partes menores e mais simples.
Os principais elementos da recursão são:
- Caso base: a condição que interrompe a recursão;
- Caso recursivo: a parte em que a função chama a si mesma com uma entrada mais simples.
Por que usar recursão?
Alguns problemas podem ser naturalmente expressos em termos de subproblemas menores. A recursão oferece uma forma clara e elegante de resolvê-los, permitindo que uma função chame a si mesma para lidar com casos mais simples. É comumente utilizada em tarefas como processamento de árvores, exploração de caminhos ou decomposição de estruturas (por exemplo, listas, strings).
Um Exemplo Simples
123456def print_message(message, times): if times > 0: # Base case: stop when times is 0 print(message) print_message(message, times - 1) # Recursive case print_message('Hello, Recursion!', 3)
Siga passo a passo para entender como isso funciona:
times = 3→ condição é verdadeira, imprime a mensagem, chamaprint_message(message, 2);times = 2→ condição é verdadeira, imprime a mensagem, chamaprint_message(message, 1);times = 1→ condição é verdadeira, imprime a mensagem, chamaprint_message(message, 0);times = 0→ condição é falsa, a recursão para.
Resultado: a mensagem é impressa três vezes.
A Pilha de Chamadas
Cada vez que a função chama a si mesma, ela adiciona um novo quadro à pilha de chamadas — uma estrutura de memória que acompanha as chamadas de funções ativas. Quando o caso base é alcançado, cada chamada anterior é concluída uma a uma em ordem reversa.
Toda função recursiva deve ter um caso base. Sem ele, a função continuará se chamando indefinidamente e causará um RecursionError.
Deslize para começar a programar
Implemente uma função recursiva list_sum que calcula a soma de todos os elementos em uma lista.
- Se a lista
numbersestiver vazia, retorne0— este é o caso base; - Caso contrário, separe o primeiro elemento do restante. Retorne o primeiro elemento (
numbers[0]) somado ao resultado da chamada delist_sum()novamente com o restante da lista (numbers[1:]).
Solução
Obrigado pelo seu feedback!
single
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo