python定义函数计算1+3/2!+5/3!+…,(2n-1)/n!

python定义函数计算1+3/2!+5/3!+…,(2n-
计算结果保留小数点后8位。

例子给错了,应该是(2n-1)/n!
假设更正过来,要求 1+3/2!+5/3!+…,(2n-1)/n!,可以注意到,该数列的递归规律为 f(i) = f(i-1) * (2i-1) / ((2i-3)*i)
从而可以变成 O(n) 的复杂度

def fun(n):
    s = [1]
    for i in range(2, n+1):
        s.append(s[i-2]*(2*i-1)/(2*i-3)/i)
    return round(sum(s), 8)

n = int(input())
print(fun(n))

def P(n):
    if n < 2:
        return 1
    return n * P(n - 1)
def X(n):
    return round(sum([1] + [(v + 2)/P(v + 1) for v in range(1,n)]),8)
n = 11
print('{:.8f}'.format(X(n)))