1. 程式人生 > >【劍指Offer】04斐波那契數列

【劍指Offer】04斐波那契數列

題目描述

大家都知道斐波那契數列,現在要求輸入一個整數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