def u(n, U = None): if U is None or U == []: U = [(1,0)] + [(None,None)] * n if U[n][0] is None: val = u(n-1, U)[1] + n * u(n-1, U)[0] U[n] = (val / n, val) return U[n] for n in range(20): print(u(n)[0])