斐波那契数列python代码

斐波那契数列是一个经典的数学问题,可以用递归或循环来实现。

方法一:使用递归实现斐波那契数列

python
def fibonacci_recursive(n): if n <= 1: return n else: return fibonacci_recursive(n-1) + fibonacci_recursive(n-2) # 测试 n_terms = 10 # 要生成的斐波那契数列项数 print("斐波那契数列:") for i in range(n_terms): print(fibonacci_recursive(i))

方法二:使用循环实现斐波那契数列

python
def fibonacci_iterative(n): fib_series = [0, 1] # 前两项已知 if n <= 1: return fib_series[n] else: for i in range(2, n + 1): fib_series.append(fib_series[i-1] + fib_series[i-2]) return fib_series[n] # 测试 n_terms = 10 # 要生成的斐波那契数列项数 print("斐波那契数列:") for i in range(n_terms): print(fibonacci_iterative(i))

这两种方法都能生成斐波那契数列,但是在实践中,循环方法通常比递归方法更有效率,因为递归方法会涉及到很多重复计算。

如果您想要对斐波那契数列的代码进行更进一步的探索或优化,还有一些额外的方向可以考虑:

1. 使用生成器函数

你可以使用生成器函数来生成斐波那契数列,这样可以节省内存空间,并且可以按需生成数列的下一项。

python
def fibonacci_generator(): a, b = 0, 1 while True: yield a a, b = b, a + b # 使用生成器生成斐波那契数列 fib_gen = fibonacci_generator() for _ in range(10): print(next(fib_gen))

2. 使用缓存优化递归实现

在递归方法中,可以使用缓存来存储已经计算过的结果,避免重复计算,提高效率。Python中可以使用装饰器functools.lru_cache()来实现缓存。

python
from functools import lru_cache @lru_cache(maxsize=None) def fibonacci_recursive_cached(n): if n <= 1: return n else: return fibonacci_recursive_cached(n-1) + fibonacci_recursive_cached(n-2) # 测试 n_terms = 10 print("斐波那契数列:") for i in range(n_terms): print(fibonacci_recursive_cached(i))

这样做可以大大提高递归方法的效率。

3. 矩阵乘法优化

还可以利用矩阵乘法的方法来计算斐波那契数列,这种方法的时间复杂度更低,但是需要一些线性代数的知识。