美文网首页剑指offer-python
面试题10:斐波那契数列

面试题10:斐波那契数列

作者: 小歪与大白兔 | 来源:发表于2018-06-19 18:26 被阅读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

相关文章

网友评论

    本文标题:面试题10:斐波那契数列

    本文链接:https://www.haomeiwen.com/subject/jikzeftx.html