📜  数据结构和算法Fibonacci系列(1)

📅  最后修改于: 2023-12-03 15:40:01.707000             🧑  作者: Mango

数据结构和算法Fibonacci系列

Fibonacci 数列指的是这样一个数列:1、1、2、3、5、8、13、21、34、…… 这个数列从第三项开始,每一项都等于前两项之和。

在计算机编程中,Fibonacci 数列被广泛运用,例如编写递归函数、动态规划算法等。

Fibonacci 数列的递归实现

递归实现 Fibonacci 数列的代码如下:

def fibonacci_recursive(n):
    if n <= 1:
        return n
    else:
        return fibonacci_recursive(n-1) + fibonacci_recursive(n-2)

这里使用了递归的方式实现,但是递归实现的时间复杂度为O(2^n),时间效率较低。

Fibonacci 数列的迭代实现

我们还可以使用迭代的方式实现 Fibonacci 数列:

def fibonacci_iterative(n):
    if n == 0:
        return 0
    elif n == 1:
        return 1
    else:
        a, b = 0, 1
        for i in range(1, n):
            a, b = b, a + b
        return b

相对于递归实现,迭代实现的时间复杂度为O(n),效率更高。

Fibonacci 数列的动态规划实现

在实现的时候,我们还可以使用动态规划的思想:

def fibonacci_dp(n):
    if n == 0:
        return 0
    elif n == 1:
        return 1
    else:
        dp = [0] * (n + 1)
        dp[1] = 1
        for i in range(2, n + 1):
            dp[i] = dp[i-1] + dp[i-2]
        return dp[n]

动态规划是一种时间复杂度比较低的解法,其时间复杂度为O(n)。

以上就是 Fibonacci 数列的三种不同实现方式,每种方式各有优缺点,我们根据实际情况选择使用即可。