📜  斐波那契系列 - Python (1)

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

斐波那契系列 - Python

斐波那契数列是指当前的数是由前两个数相加而来的数列,比如:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144,...。

在Python中,可以使用很多种方法计算斐波那契数列,下面介绍几种常见的方法。

方法一:递归

递归是一种常见的计算斐波那契数列的方法,代码如下:

def fib(n):
    if n == 0:
        return 0
    elif n == 1:
        return 1
    else:
        return fib(n-1) + fib(n-2)

但是,递归计算斐波那契数列的时间复杂度非常高,会导致程序运行缓慢,不推荐使用。

方法二:循环

循环是一种计算斐波那契数列的高效方法,代码如下:

def fib(n):
    a, b = 0, 1
    for i in range(n):
        a, b = b, a+b
    return a

这种方法的时间复杂度为O(n),是一种推荐的计算斐波那契数列的方法。

方法三:生成器

Python中的生成器也可以用来生成斐波那契数列,代码如下:

def fib():
    a, b = 0, 1
    while True:
        yield a
        a, b = b, a+b

f = fib()
for i in range(10):
    print(next(f))

这种方法可以生成任意长度的斐波那契数列,但需要注意的是,生成器的时间复杂度与方法二相同。

方法四:矩阵

还有一种计算斐波那契数列的方法是使用矩阵,代码如下:

import numpy as np

def fib(n):
    F = np.matrix([[1, 1], [1, 0]])
    return np.power(F, n-1)[0, 0]

print(fib(10))

这种方法的时间复杂度为O(logn),是一种高效的计算斐波那契数列的方法。

总的来说,以上四种方法都可以用来计算斐波那契数列,但不同的方法适用于不同的场景。需要根据实际情况选择不同的方法。