牛客-劍指offer 07 | 斐波那契數列

題目描述

大家都知道斐波那契數列,現在要求輸入一個整數n,請你輸出斐波那契數列的第n項(從0開始,第0項爲0,n<=39)。

題解

首先是斐波那契數列,除了第一項和第二項,所有的數列的值都是前一項和前一項的前一項的加和,轉換成函數也就是f(n) = f(n-1) + f(n-2):

第0項:0
第1項:1
第2項:1
第3項:2


第n項:f(n) = f(n-1) + f(n-2)

看到這裏首先想到的就是遞歸算法:

# -*- coding:utf-8 -*-
class Solution:
    def Fibonacci(self, n):
        # write code here
        if n == 0:
            return 0
        elif n == 1:
            return 1
        else:
            sum = self.Fibonacci(n - 1) + self.Fibonacci(n - 2)
            return sum

但是提交代碼後發現超時了,下面是非遞歸寫法,循環過程中,將 (n-1)和(n-2)的值加到 sum 中,並刷新 (n-1)和(n-2)的值:

# -*- coding:utf-8 -*-
class Solution:
    def Fibonacci(self, n):
        # write code here
        if n == 0:
            return 0
        elif n == 1:
            return 1
        else:
            sum = 0
            n0 = 0
            n1 = 1
            for i in range(2,n+1):
                sum = n0 + n1
                n0 = n1
                n1 = sum
            return sum
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章