繼續做題~經過py3測試
原題鏈接:http://www.runoob.com/python/python-exercise-example6.html
題目:斐波那契數列。
我的代碼:
def fib(n): if n==1: l=[0] elif n==2: l=[0,1] else: l=[0,1] for i in range(2,n): l.append(l[i-1]+l[i-2]) return l
思考:函數fib是以列表的形式返回的斐波那契數列,該列表第0/1位的無法迭代得出,所以用了if來解決這個問題。但是判斷的次數很多,其實代碼很繁瑣。
看了題目下面的答案,可以用迭代的形式一次輸出一個數字,代碼也簡潔了很多~
def Fib(n): a, b = 0, 1 #直接用變量給出了1,2個數,不需要if print(a) while n-1: a, b, n = b, a + b, n - 1 #用一行代碼就實現了斐波那契數列的迭代,也實現了循環的計數 print(a)