求:1-1/2+2/3-3/5+4/8-5/13+…的前n项和,n由用户输入(n>0),结果用str.format()方法保留小数点后6位数字输出。
分析:
除第一项外,从第二项开始,分子是1,2,3,4,5,6,7…
分母是斐波那契数列,1,2,3,5,8,13…
难点在于符号(-)负数符号的处理,一负一正交替着的!
代码如下:
n = eval(input())
fq, fh= 1, 1
sum_ = 1
for i in range(1, n):
fq, fh = fh, fq + fh
sum_ += (pow(-1, i)*i)/fh
print("{:.6f}".format(sum_))