De acordo com a Wikipedia, uma recursão é definida como:
“... um método de resolver um problema onde a solução depende de soluções para instâncias menores do mesmo problema”
Vamos tentar entender essa afirmação usando um exemplo e, em seguida, tirar algumas conclusões.
Vejamos um problema como o cálculo de 5! (fatorial). Para saber o resultado de 5! precisamos calcular:
5! = 5 *4 *3 *2 *1
5! = 5 *4! = 5 *4 *3 *2 *1
Se tivéssemos que escrever o algoritmo para esta operação, ele se pareceria com:
factorial = n * (n -1)!
Recursão e loop for são intercambiáveis. Parece uma abordagem intuitiva olhar primeiro para um loop for em ação para entender o que está acontecendo.
Primeiro, vamos criar a função de loop for e, em seguida, vamos interrompê-la.
def factorial_loop(n):
fact = 1
for i in range(1, n+1):
fact *=i
return fact
factorial_loop(5)
'Out: 120'
# 1 Iteration:
def factorial_loop(5):
fact = 1
for i=1 in range(1, 6):
1 *= 1
return 1
# 2 Iteration:
def factorial_loop(5):
fact = 1
for i=2 in range(1, 6):
1 *= 2
return 2
# 3 Iteration:
def factorial_loop(5):
fact = 2
for i=3 in range(1, 6):
2 *= 3
return 6
# 4 Iteration:
def factorial_loop(5):
fact = 6
for i=4 in range(1, 6):
6 *= 4
return 24
# 5 Iteration:
def factorial_loop(5):
fact = 24
for i=5 in range(1, 6):
24*= 5
return 120
A recursão fará o mesmo trabalho que o loop for, entretanto a sintaxe da recursão é um pouco diferente e pode não ser muito intuitiva à primeira vista, mas iremos decompô-la passo a passo.
def factorial_recursion(n):
if n <= 1:
return 1
else:
return n * factorial_recursion(n-1)
factorial_recursion(5)
Divida uma palavra em grupos de 2 letras. Se a palavra tiver letras irregulares, adicione “_” à última letra. A saída deve ser uma lista com grupos de duas letras do tipo string.
def split_string_recursion(s):
if len(s) == 0:
return ''
elif len(s) == 1:
return [s + '_']
else:
return [s[:2]] + split_string_recursion(s[2:])
split_string_recursion('amazing')
'out: ['am', 'az', 'in', 'g_']'
def reverse_string_recursive(s):
if len(s) == 0:
return ''
else:
return reverse_string_recursive(s[1:]) + s[0]
reverse_string_recursive('amazing')
Crie uma matriz fibonacci usando recursão.
def fib_recursive(n):
if n <=2:
return 1
else:
return fib_recursive(n-1) + fib_recursive(n-1)
fib_recursive(5)
Quando você faz uma solicitação para facebook.com, seu computador procura o nome de domínio para traduzir esse nome de domínio em um endereço IP para que seu computador possa fazer essa conexão.
Você deve ter ouvido falar sobre todos os novos plug-ins poderosos do ChatGPT, como navegador, intérprete de código, etc. Mas há um problema, o acesso aos plug-ins é limitado a uma lista de espera e, portanto, muitos não têm acesso a ela.
Por Alyson Lee, consultor administrativo de assuntos governamentais O processo de apropriações anuais do governo federal é fundamental para nossos esforços para financiar a remoção de dióxido de carbono (CDR). Todos os anos, a Carbon180 envia solicitações a vários escritórios do Congresso para ajudar a orientar para onde os dólares do próximo ano irão fluir.
“Ei, Siri, toque Me Dive, de Olivia Dean.” Era maio de 2021 quando comecei meu estágio na Future Academy Africa em Akure, Nigéria.
“Ele vai me proteger quando eu estiver em perigo. Ele me esconderá em sua tenda.
(Aviso - isso é sátira, com a intenção de ser alegremente subversivo - definitivamente não é para crianças) Você viu sua mãe e seu pai se esconderem na cozinha e fumarem aqueles cigarros fedorentos. Eles dizem a você.