在學遞歸的時候,用遞歸實現了一個
下面是代碼
1 def fib(n): 2 if n >= 3: 3 return fib(n-1)+fib(n-2) 4 else: 5 return 1 6 print(fib(6))
發現一個很嚴重的問題:當數字比較小的時候還好,但是當求30以后的數字的時候,就會運行特別長的時間
所以請看下面一種方法
1 while True: 2 def fib(n): 3 result = [1,1] 4 for i in range(n-2): 5 result.append(result[-2]+result[-1]) 6 return result[-1] 7 8 9 n = input('你想知道第多少個斐波那契數:') 10 if n == 'q': 11 break 12 else: 13 n = int(n) 14 print('result = %d'%(fib(n)))
發現速度提升特別大,求第1000個數都可以,牛!