Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Recursão | Recursão e Funções Lambda
Tutorial de Funções em Python

bookRecursão

Note
Definiçã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).

1234567
def 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)
copy

Vamos analisar passo a passo como este programa recursivo funciona:

  1. Verificação da Condição: se times > 0, a função continua. Neste caso, times = 3, então a condição é verdadeira;

  2. Impressão da Mensagem: a função imprime "Hello, Recursion!";

  3. Chamada Recursiva: a função chama a si mesma com times - 1;

  4. Repetição: esse processo continua até que times seja igual a 0;

  5. Finalização: quando a condição times > 0 não for mais verdadeira, a recursão é encerrada e o programa termina.

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.

Tarefa

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.

  1. Se a string de entrada number estiver vazia, retornar uma string vazia.
  2. Verificar se o primeiro caractere da string number é um dígito utilizando o método isdigit() em uma condição if.
  3. 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.
  4. Se não for um dígito, fazer uma chamada recursiva para format_phone_number, ignorando o primeiro caractere.

Solução

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 5. Capítulo 1
single

single

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Suggested prompts:

Can you explain what happens if there is no base case in a recursive function?

Can you show another example of recursion?

What are some common problems that can be solved using recursion?

close

Awesome!

Completion rate improved to 4.35

bookRecursão

Deslize para mostrar o menu

Note
Definiçã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).

1234567
def 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)
copy

Vamos analisar passo a passo como este programa recursivo funciona:

  1. Verificação da Condição: se times > 0, a função continua. Neste caso, times = 3, então a condição é verdadeira;

  2. Impressão da Mensagem: a função imprime "Hello, Recursion!";

  3. Chamada Recursiva: a função chama a si mesma com times - 1;

  4. Repetição: esse processo continua até que times seja igual a 0;

  5. Finalização: quando a condição times > 0 não for mais verdadeira, a recursão é encerrada e o programa termina.

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.

Tarefa

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.

  1. Se a string de entrada number estiver vazia, retornar uma string vazia.
  2. Verificar se o primeiro caractere da string number é um dígito utilizando o método isdigit() em uma condição if.
  3. 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.
  4. Se não for um dígito, fazer uma chamada recursiva para format_phone_number, ignorando o primeiro caractere.

Solução

Switch to desktopMude para o desktop para praticar no mundo realContinue de onde você está usando uma das opções abaixo
Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

close

Awesome!

Completion rate improved to 4.35
Seção 5. Capítulo 1
single

single

some-alt