斐波那契数列是数学上的一个经典数列,其数列的定义为:第0项为0,第1项为1,从第2项开始每一项都等于前两项之和,即fibonacci(n)=fibonacci(n-1)+fibonacci(n-2)。Python可以简单地实现斐波那契数列的计算。
简单递归
通过递归简单实现斐波那契数列的计算,代码如下:
def fibonacci(n):
if n <= 1:
return n
else:
return fibonacci(n-1) + fibonacci(n-2)
在这个函数中,首先检查所请求的斐波那契数的位置,如果它小于或等于1,则返回其本身。否则,将返回n-1和n-2的斐波那契数的和。虽然这个函数简单明晰,但是由于它使用递归思想,当n值比较大时会消耗过多的计算资源,因而效率比较低。
动态规划
通过动态规划的思想对斐波那契数列进行计算,代码如下:
def fibonacci(n):
f = [0, 1]
for i in range(2, n+1):
f.append(f[i-1]+f[i-2])
return f[n]
这里的思路是从定义出发,斐波那契数列的第n项是前两项的和,而前两项分别是0和1,可以利用一个列表记录下前两项,然后每次更新列表,计算得到下一项,最后返回所求的项即可。由于只需要记录前两项,所以空间占用极小,而时间复杂度为O(n),比递归方式更为高效。