Get Mystery Box with random crypto!

Como calcular recursão desconstruindo ela As vezes, usar esta | Curso de python

Como calcular recursão desconstruindo ela

As vezes, usar esta forma https://t.me/ForkPython/150 para calcular funções, pode não ser muito intuitiva, principalmente por ela fazer mais sentido quando você tem uma base numérica por trás ou lida exatamente com matemática. Agora vamos fazer uma função que calcula o produto de uma função (por exemplo, pega [1, 2, 3, 4, 5] e faz 1 * 2 * 3 * 4 * 5):

def product(list_num):
if list_num == []:
return 0
# não precisamos usar
# else, porque o return
# termina a função
x = list_num[0] # cabeça
xs = list_num[1:] # calda
return (x * product(xs))

Agora, se formos rodar esta função, ela retornará 0 independente de qualquer valor. Mas por quê? Vamos dar uma olhada:

product([1, 2, 3, 4])
# 1 * product([2, 3, 4])
# 1 * 2 * product([3, 4])
# 1 * 2 * 3 * product([4])
# 1 * 2 * 3 * 4 * product([])
# 1 * 2 * 3 * 4 * 0
# 0

Realmente, a função está errada. Ao invés de retornar 0, vamos fazê-la retornar 1. Agora vamos ver como será:

product([1, 2, 3, 4])
# 1 * product([2, 3, 4])
# 1 * 2 * product([3, 4])
# 1 * 2 * 3 * product([4])
# 1 * 2 * 3 * 4 * product([])
# 1 * 2 * 3 * 4 * 1
# 24

Nota: Não se preocupe, você se acostuma e vai poder pensar nesses problemas logicamente na cabeça. Só ir treinando. Além de que recursão é muito mais poderoso do que for. E em breve, ensinarei a fazer tail call recursion, uma técnica de recursão que é tratada como iteração e seu custo não aumenta a cada loop.

Em breve passamos mais alguns exercícios de recursão. ;)