码迷,mamicode.com
首页 > 编程语言 > 详细

python实现斐波那契数列(Fibonacci sequence)

时间:2017-07-01 14:36:28      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:内存   占用   代码   xrange   数字   级别   range   一个   毫秒级   

使用Python实现斐波那契数列(Fibonacci sequence)

斐波那契数列形如 1,1,2,3,5,8,13,等等。也就是说,下一个值是序列中前两个值之和。写一个函数,给定N,返回第N个斐波那契数字。例如,1返回1

6返回8

我选择了两种方法,一种是将list变成一个队列,另一个则是使用环形队列。不多说,直接上代码;后面我会对为什么这样实现做一个解释

第一个是使用队列的方式:

1 def fibonacciSeq(num):
2     fibonacciSeqList = []
3     for i in xrange(0, num):
4         if len(fibonacciSeqList) < 2:
5             fibonacciSeqList.append(1)
6             continue
7         fibonacciSeqList.append(fibonacciSeqList[-1]+fibonacciSeqList[-2])
8         fibonacciSeqList.pop(0)
9     return fibonacciSeqList[-1]

第二个同样使用了list,但是是已经初始化好的list:

1 def fibonacciSeq_c(num):
2     fibonacciSeqList = [1,1,1]
3     writeposi = 0
4     if num <= 2:
5         return fibonacciSeqList[num]
6     for i in xrange(2, num):
7         writeposi = i % 3
8         fibonacciSeqList[writeposi] = fibonacciSeqList[writeposi-1] + fibonacciSeqList[writeposi-2]
9     return fibonacciSeqList[writeposi]

这两种,达到的目录是一样的,都是返回第N个斐波那契数

下面是对上面的代码的解释:

1. 为什么使用队列的方式?

因为,当你所要求的数是一个很大的数时,你会发现单纯使用list为将内存占满

2. 为什么使用环形队列?

因为,当运算量越大的时候,环形队列会比第一种方式,所占用的时间更短,虽然可以是毫秒级别的。哈哈哈

python实现斐波那契数列(Fibonacci sequence)

标签:内存   占用   代码   xrange   数字   级别   range   一个   毫秒级   

原文地址:http://www.cnblogs.com/loveyangaddddd/p/7102102.html

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