python基础练习题(题目 斐波那契数列II)

day16

---------------------------------------------------------------

实例024:斐波那契数列II

题目 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。

分析:就是斐波那契数列的后一项除以前一项,于是写了两个函数

 1 def fbs(num):
 2     a = [0,1]
 3     if num<=2:
 4         return a
 5     else:
 6         for i in range(1,int(num-1)):
 7             tmp = a[-1]+a[-2]
 8             a.append(tmp)
 9         return a
10 def fbs2(num):
11     num +=3
12     a = fbs(num)
13     b=[]
14     if num >3:
15         for i in range(3,int(num)):
16             tmp = a[i] / a[i-1]
17             b.append(tmp)
18     return b
19 print(fbs2(20))
20 print(sum(fbs2(20)))

再看看答案:

1 a = 2.0
2 b = 1.0
3 s = 0
4 for n in range(1,21):
5     s += a / b
6     a,b = a + b,a
7 print (s)

感觉还是没有学的python的赋值精髓,自己把简单的东西复杂化了。。。

原文地址:https://www.cnblogs.com/qgc1995/p/15000078.html