python实现斐波那契数列的函数

  • Post category:Python

斐波那契数列是数学上的一个经典数列,其数列的定义为:第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),比递归方式更为高效。