En las primeras clases, implementamos las sumatorias con ciclos y almacenando el resultado en una variable. La recursión lo soluciona desde el punto de vista de simplificar un poco el problema y volver a llamar esa rutina hasta cumplir la condicion de termino
In [1]:
def sumatoria_recursiva(n):
# Condición de termino
if n == 1:
return 1
# regla general
return n + sumatoria_recursiva(n-1)
In [2]:
sumatoria_recursiva(20)
Out[2]:
In [3]:
20*21/2
Out[3]:
Ahora implementaremos la funcion contar_texto, que busca cuantas veces se encuentra el texto "st", dentro de "texto".
In [4]:
def contar_texto(texto, st):
# Condición de termino
if len(texto) < len(st):
return 0
# Dos opciones para la regla general, si comienza o no con st y ambos eliminan caracteres
if texto.startswith(st):
return 1 + contar_texto(texto[len(st):], st)
else:
return contar_texto(texto[1:], st)
In [6]:
contar_texto("universidade del desarrollo", "de")
Out[6]:
Por ultimo, hace pocas clases vimos el triangulo de pascal iterativamente, ahora lo haremos recursivamente.
In [8]:
def pascal(n):
if n == 0:
return [1]
lista = pascal(n-1)
res = [1]
for i in range(len(lista)-1):
res.append(lista[i]+lista[i+1])
res += [1]
return res
In [9]:
pascal(4)
Out[9]:
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]: