【劍指Offer】04斐波那契數列
阿新 • • 發佈:2018-11-11
題目描述
大家都知道斐波那契數列,現在要求輸入一個整數n,請你輸出斐波那契數列的第n項(從0開始,第0項為0)。
n<=39
時間限制:1秒;空間限制:32768K
解題思路
首先看到題目的第一想法就是遞迴,程式碼如下:
# -*- coding:utf-8 -*- class Solution: def Fibonacci(self, n): # write code here if n<=1: return 1 else: return self.Fibonacci(n-1)+self.Fibonacci(n-2)
線下執行成功,線上除錯發現會超時報錯。
遞迴的思路行不通於是想到了用迭代的思路,最終執行通過。python程式碼:
# -*- coding:utf-8 -*- class Solution: def Fibonacci(self, n): # write code here i=0 j=1 k=0 #中間變數 while n>0: k = j j += i i = k n -= 1 return i
看了討論區大神們的分享,其實還能改進,可以去掉一箇中間變數k,具體操作如下:
while n>0:
j += i
i = j - i
n-=1