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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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)的主要内容,如果未能解决你的问题,请参考以下文章

用递归方法计算斐波那契数列(Recursion Fibonacci Python)

[Python学习] 斐波那契数列 Fibonacci Sequence

python3 求斐波那契数列(Fibonacci sequence)

如何用Python输出一个斐波那契Fibonacci数列

递归优化的斐波那契数列

斐波那契数列(C++ 和 Python 实现)