首页 > 代码库 > python实现斐波那契数列(Fibonacci sequence)

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

使用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)