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]:
210

In [3]:
20*21/2


Out[3]:
210.0

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]:
3

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]:
[1, 4, 6, 4, 1]

In [ ]:


In [ ]:


In [ ]:


In [ ]:


In [ ]: