剑指offer-python

面试题10:斐波那契数列

2018-06-19  本文已影响0人  小歪与大白兔

题目描述:

大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。

解题思路:

  1. 斐波那契数列定义如下:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)
    1.根据定义,最先想到的是递归的解法,但是当n较大时,递归的效率会很低;是随着n呈指数增长的。
  2. 可以将已得到的中间项保留,所以最直观的方法就是从下往上计算。时间复杂度O(n)。b表示后面的一个数字,a表示前面的数字即可。每次进行的变换是:temp = a,a=b,b=temp + b
# -*- coding:utf-8 -*-
class Solution:
    def Fibonacci(self, n):
        # write code here
        # 斐波那契数列定义F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)
        if n<=0:
            return 0
        else:
            a = 1
            b = 1
            while n > 2:
                temp = a 
                a = b 
                b = temp + b
                n = n - 1
            return b
上一篇 下一篇

猜你喜欢

热点阅读