编程求分式编程求以上公式的前20项之和。(输出结果要保留六位小数)

s=1/1+2/1×3+3/1×3×5+4/1×3×5×7+...
编程求以上公式的前20项之和。(输出结果要保留六位小数)

img


if __name__ == '__main__':
    s = 0
    for i in range(1, 21):
        temp = 1
        for j in range(1, i+1):
            temp *= 2*j-1
        s += i/temp
    print('公式前20项之和为:%.6f' % s)
  • 代码运行效果截屏图片

    img


    img


    img


    其实,从第六项起,每项的值都在六位小数以后了,对总和已经不造成影响。前8项的总和 == 前20项的总和。

    img

#!/sur/bin/nve python
# coding: utf-8


def mysum(n):
    ''' 求公式前20项和 '''
    mysum = 0 # 总和初值。
    denominator = 1 # 公式项中分母初值。

    for i in range(1, n+1):
        denominator *= (2*i-1) # 计算分母。
        mysum += i/denominator
        

    return mysum

if __name__ == '__main__':
    n = int(input(f"\n{'':~^41}\n{'输入 n = ':>18}").strip())
    print(f"\n{'':>8}公式前 {n:0>2} 项和:{mysum(n):.6f}\n{'':~^41}")