如何构建斐波那契数列(Fibonacci numbers)函数?请求技术指导
构建斐波那契数列函数的几种实现方式
1. 基础递归实现(适合理解逻辑)
直接遵循斐波那契数列的数学定义,输入整数n返回第n项(定义第0项为0,第1项为1):
def fib(n): if n <= 0: return 0 elif n == 1: return 1 else: return fib(n-1) + fib(n-2)
注意:该实现存在大量重复计算,当n大于30时性能会明显下降。
2. 迭代实现(高效推荐)
通过循环迭代计算,避免递归的重复计算问题,是性能最优的实现方式之一:
def fib(n): a, b = 0, 1 for _ in range(n): a, b = b, a + b return a
如果需要生成前n项的完整序列,可以修改为:
def fib_sequence(n): sequence = [] a, b = 0, 1 for _ in range(n): sequence.append(a) a, b = b, a + b return sequence
调用示例:fib_sequence(6) 返回 [0, 1, 1, 2, 3, 5]
3. 带缓存的递归(兼顾可读性与效率)
使用lru_cache装饰器缓存已计算的结果,解决基础递归的性能问题:
from functools import lru_cache @lru_cache(maxsize=None) def fib(n): if n <= 0: return 0 elif n == 1: return 1 else: return fib(n-1) + fib(n-2)
内容的提问来源于stack exchange,提问作者leon
相关产品推荐
相关产品推荐

