def u(n , U = None): if not U: U = [(1,0)] + [(None,None)] * n if U[n][0] == 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] )