斐波那契数列的形式如下:
f(0)=0,f(1)=1,f(2)=1,当n>=3时,f(n)=f(n-1)+f(n-2)
分析可以发现:n大于等于3时,每次计算都会使用到最近的前面连个元素,如果直接使用递归的方式计算的话,时间复杂度太高,所以这里可以使用一个两元素的列表,用于交替存储每次计算后的结果,最后根据n的奇偶性输出列表中的对应元素即为最终的结果。

# -*- coding:utf-8 -*-
class Solution:
    def Fibonacci(self, n):
        # write code here
        #if n <= 1:
        #    return n
        #return self.Fibonacci(n-1) + self.Fibonacci(n-2)   #计算复杂度为2^n,太高
        if n <=1:
            return n
        else:
            a = [1,1]
            for i in range(3,n+1):
                if i % 2 != 0:
                    a[0] = a[0] + a[1]
                else:
                    a[1] = a[0] + a[1]
            if n % 2 == 0:
                return a[1]
            else:
                return a[0]

时间复杂度为:O(n)