In [1]:
@cached_function
def NRcount_rec(k, n, c):
    if n == 0:
        return 1
    else:
        if c == 0:
            return NRcount_rec(k, n-1, k-1)
        else:
            return (NRcount_rec(k, n-1, c-1) + NRcount_rec(k, n-1, k-1))
        
def NRcount(k, n):
    if n == 0: 
        return 1
    return 2*NRcount_rec(k, n-1, k-1)

In [2]:
[NRcount(2, n) for n in range(10)]


Out[2]:
[1, 2, 4, 6, 10, 16, 26, 42, 68, 110]

In [ ]:


In [ ]:


In [ ]: