描述
1-1/2+2/3-3/5+4/8-5/13+…的前n项和,n由用户输入(n>0),结果用str.format()方法保留小数点后6位数字输出。
输入格式
一个正整数
输出格式
前n项的和
通过观察,可以发现分子与分母存在如下的规律:
除第1位之外:
分子序列是:1,2,3,4,5,…,n 这是一个步长为1的等差数列,最大值为n
分母序列是:2,3,5,8,13,…,这是一个斐波那契数列,规律是后一项是前2项的加和
斐波那契数列完整表示为:1,1,2,3,5,8,13,21…
- 输入项数n
- 构造初值,包括加和、斐波那契数列的前2项的值,设置符号位初值
- 遍历从1到n-1的数:
- 计算下一个斐波那契数
- 累加
- 符号位取反
- 输出计算结果,注意保留小数位数
n = int(input())
a,b = 1,1 # 构建斐波那契数列的前2项
flag = -1 # 设置一个符号标记
MySum = 1 # 设置累加各初值,当n = 1时输出此值
for i in range(1,n): # 当n = 1时,不进入循环
a, b = b, a + b # 计算产生下一个斐波那契数
MySum = MySum + flag * i / b # 累加,
flag = -flag # 符号标记值取反
print('{:.6f}'.format(MySum)) # 退出循环后输出