码迷,mamicode.com
首页 > 其他好文 > 详细

《剑指offer》---斐波那契数列

时间:2018-05-16 22:41:17      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:[]   8K   info   接下来   img   分享   复杂度   ret   返回   

本文算法使用python3实现


1.题目描述:

??大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。n<=39
??时间限制:1s;空间限制:32768K


2.思路描述:

??实现斐波那契额数列主要有两种方法:
??(1)递归法:自顶向下进行,当递归较深时,时间复杂度是很高的。
??(2)迭代法:自底向上进行,从第0项开始计算,并将结果保存起来,最后返回第n项即可。该方法时间复杂度较低,但需要额外空间,相对于递归来说,是一种空间换时间的方法。
??接下来我们将分别对两种方法进行实现,并比较两者的时间消耗。


3.程序代码:

递归法

class Solution:
    def Fibonacci(self, n):
        '''递归法'''
        if n in [0,1]:
            return n
        return self.Fibonacci(n-2)+self.Fibonacci(n-1)

所需时间:
??技术分享图片




迭代法

class Solution:
    def Fibonacci(self, n):
        '''迭代法'''
        FibList = []
        # 将前n项保存在数组中
        for i in range(n+1):
            if i in [0,1]:
                FibList.append(i)
                continue
            FibList.append(FibList[-2]+FibList[-1])
        return FibList[-1]

所需时间:
??技术分享图片

《剑指offer》---斐波那契数列

标签:[]   8K   info   接下来   img   分享   复杂度   ret   返回   

原文地址:https://www.cnblogs.com/lliuye/p/9048094.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!