描述

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…

  1. 输入项数n
  2. 构造初值,包括加和、斐波那契数列的前2项的值,设置符号位初值
  3. 遍历从1到n-1的数:
    1. 计算下一个斐波那契数
    2. 累加
    3. 符号位取反
  4. 输出计算结果,注意保留小数位数
  1. n = int(input())
  2. a,b = 1,1 # 构建斐波那契数列的前2项
  3. flag = -1 # 设置一个符号标记
  4. MySum = 1 # 设置累加各初值,当n = 1时输出此值
  5. for i in range(1,n): # 当n = 1时,不进入循环
  6. a, b = b, a + b # 计算产生下一个斐波那契数
  7. MySum = MySum + flag * i / b # 累加,
  8. flag = -flag # 符号标记值取反
  9. print('{:.6f}'.format(MySum)) # 退出循环后输出