问题:有个分数序列,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