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

Posted LLLiuye

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《剑指offer》---斐波那契数列相关的知识,希望对你有一定的参考价值。

本文算法使用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》---斐波那契数列的主要内容,如果未能解决你的问题,请参考以下文章

剑指offer-斐波那契数列

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

剑指OFFER斐波那契数列

剑指offer斐波那契数列

剑指offer01-斐波那契数列

[剑指offer] 斐波那契数列