📜  斐波那契 - Python (1)

📅  最后修改于: 2023-12-03 14:55:03.336000             🧑  作者: Mango

斐波那契数列 - Python

斐波那契数列是由0, 1, 1, 2, 3, 5, 8, 13, 21, 34...等无限个数字组成的数列,从第三项开始,每一项均等于前两项之和。

在 Python 中,有多种方法实现斐波那契数列,下面将介绍其中的几种方式。

方法一 - 递归

递归方法是一种最简单的方法,但当需要计算大量的斐波那契数列时,性能会受到影响。

def fibonacci_recursive(n):
    if n <= 0:
        return 0
    elif n == 1:
        return 1
    else:
        return fibonacci_recursive(n-1) + fibonacci_recursive(n-2)
方法二 - 动态规划

动态规划是一种比较高效的方法,通过记忆前面的结果,避免递归调用造成的性能损失。

def fibonacci_dp(n):
    if n <= 0:
        return 0
    elif n == 1:
        return 1
    else:
        arr = [0] * (n+1)
        arr[1] = 1
        for i in range(2, n+1):
            arr[i] = arr[i-1] + arr[i-2]
        return arr[n]
方法三 - 生成器

生成器是一种能够动态生成数据的迭代器,可以实现无限序列的计算。

def fibonacci_generator():
    a, b = 0, 1
    while True:
        yield a
        a, b = b, a + b
方法四 - 矩阵快速幂

矩阵快速幂是一种高效的算法,可以使用矩阵乘法的方法快速计算斐波那契数列的值。

import numpy as np

def matrix_power(A, n):
    if n == 0:
        return np.eye(A.shape[0], dtype=int)
    elif n == 1:
        return A
    elif n % 2 == 0:
        return matrix_power(A.dot(A), n//2)
    else:
        return A.dot(matrix_power(A.dot(A), (n-1)//2))

def fibonacci_matrix(n):
    A = np.array([[0, 1], [1, 1]], dtype=int)
    return matrix_power(A, n)[0, 1]

以上是 Python 实现斐波那契数列的几种典型方式,根据不同的需求选择不同的方法能够使程序更高效、更简洁。