Recursão
Recursão é uma técnica de programação em que uma função chama a si mesma para resolver um problema em partes menores. É especialmente útil para problemas com estrutura repetitiva ou subproblemas naturais.
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).
1234567def print_message(message, times): if times > 0: # Base case: stop when times is 0 print(message) print_message(message, times - 1) # Recursive case # Function call print_message("Hello, Recursion!", 3)
Vamos analisar passo a passo como este programa recursivo funciona:
- Verificação da Condição: se
times > 0
, a função prossegue. Neste caso,times = 3
, então a condição é verdadeira; - Impressão da Mensagem: a função imprime
"Hello, Recursion!"
; - Chamada Recursiva: a função chama a si mesma com
times - 1
; - Repetição: esse processo continua até que
times
seja igual a 0; - Finalização: quando a condição
times > 0
não for mais verdadeira, a recursão é interrompida e o programa é finalizado.
Resultado: A mensagem "Hello, Recursion!"
é impressa três vezes.
Compreendendo o fluxo:
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ção ativas). A função continua se chamando com um valor de times
menor. Quando atinge o caso base (times == 0
), ela para. Em seguida, cada chamada anterior é finalizada uma a uma em ordem reversa. Esse comportamento de retrocesso é essencial para o funcionamento da recursão.
Swipe to start coding
Dada uma string representando um número de telefone, que pode conter espaços, traços, parênteses ou outros caracteres não numéricos. O objetivo é extrair apenas os dígitos utilizando recursão.
- Se a string de entrada
number
estiver vazia, retornar uma string vazia. - Verificar se o primeiro caractere da string
number
é um dígito utilizando o métodoisdigit()
em uma condiçãoif
. - Se for um dígito, concatenar com o resultado de uma chamada recursiva para
format_phone_number
, passando a substring a partir do segundo caractere. - Se não for um dígito, fazer uma chamada recursiva para
format_phone_number
, ignorando o primeiro caractere.
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
Can you explain what happens if there is no base case in a recursive function?
What are some common mistakes to avoid when using recursion?
Can you show another example of recursion in Python?
Awesome!
Completion rate improved to 4.35
Recursão
Deslize para mostrar o menu
Recursão é uma técnica de programação em que uma função chama a si mesma para resolver um problema em partes menores. É especialmente útil para problemas com estrutura repetitiva ou subproblemas naturais.
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).
1234567def print_message(message, times): if times > 0: # Base case: stop when times is 0 print(message) print_message(message, times - 1) # Recursive case # Function call print_message("Hello, Recursion!", 3)
Vamos analisar passo a passo como este programa recursivo funciona:
- Verificação da Condição: se
times > 0
, a função prossegue. Neste caso,times = 3
, então a condição é verdadeira; - Impressão da Mensagem: a função imprime
"Hello, Recursion!"
; - Chamada Recursiva: a função chama a si mesma com
times - 1
; - Repetição: esse processo continua até que
times
seja igual a 0; - Finalização: quando a condição
times > 0
não for mais verdadeira, a recursão é interrompida e o programa é finalizado.
Resultado: A mensagem "Hello, Recursion!"
é impressa três vezes.
Compreendendo o fluxo:
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ção ativas). A função continua se chamando com um valor de times
menor. Quando atinge o caso base (times == 0
), ela para. Em seguida, cada chamada anterior é finalizada uma a uma em ordem reversa. Esse comportamento de retrocesso é essencial para o funcionamento da recursão.
Swipe to start coding
Dada uma string representando um número de telefone, que pode conter espaços, traços, parênteses ou outros caracteres não numéricos. O objetivo é extrair apenas os dígitos utilizando recursão.
- Se a string de entrada
number
estiver vazia, retornar uma string vazia. - Verificar se o primeiro caractere da string
number
é um dígito utilizando o métodoisdigit()
em uma condiçãoif
. - Se for um dígito, concatenar com o resultado de uma chamada recursiva para
format_phone_number
, passando a substring a partir do segundo caractere. - Se não for um dígito, fazer uma chamada recursiva para
format_phone_number
, ignorando o primeiro caractere.
Solução
Obrigado pelo seu feedback!
single