使用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. 为什么使用环形队列?
因为,当运算量越大的时候,环形队列会比第一种方式,所占用的时间更短,虽然可以是毫秒级别的。哈哈哈
时间: 2024-10-09 21:06:41