练习二十四:分数序列

问题:有个分数序列,2/1,3/2,5/3,8/5.。。,求数列前20向之和

思路:后一项分子是前一项得分母,后一项得分母是前一项分子和分母之和

方法一:

  1 n = int(input("输入项:"))
  2 a,b,sum1 = 1.0,2.0,0.0
  3 for i in range(n):
  4     sum1 += b/a
  5     a,b = b,a+b
  6 print(sum1)

执行结果:

输入项:20
32.66026079864164

方法二:

  1 from functools import reduce
  2 a,b,s = 2.0,1.0,0.0
  3 list1 = []
  4 for i in range(20):
  5     list1.append(a/b)
  6     b,a = a,a+b
  7 print(list1)
  8 print(reduce(lambda x,y:x+y,list1))

执行结果:

[2.0, 1.5, 1.6666666666666667, 1.6, 1.625, 1.6153846153846154, 1.619047619047619, 1.6176470588235294, 1.6181818181818182, 1.6179775280898876, 1.6180555555555556, 1.6180257510729614, 1.6180371352785146, 1.618032786885246, 1.618034447821682, 1.6180338134001253, 1.618034055727554, 1.6180339631667064, 1.6180339985218033, 1.618033985017358]
32.66026079864164
posted @ 2018-11-19 10:39  阳光宝贝-沐沐  阅读(275)  评论(0编辑  收藏  举报