斐波那契数列python代码
斐波那契数列是一个经典的数学问题,可以用递归或循环来实现。
方法一:使用递归实现斐波那契数列
pythondef 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))
方法二:使用循环实现斐波那契数列
pythondef 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. 使用生成器函数
你可以使用生成器函数来生成斐波那契数列,这样可以节省内存空间,并且可以按需生成数列的下一项。
pythondef 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()
来实现缓存。
pythonfrom 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. 矩阵乘法优化
还可以利用矩阵乘法的方法来计算斐波那契数列,这种方法的时间复杂度更低,但是需要一些线性代数的知识。