如何将斐波那契序列结果整合为单个列表?求更优实现方案
斐波那契序列生成优化方案及列表整合方法
一、更优的实现方式
直接迭代构建列表是效率较高的方案,能避免不必要的类型转换与重复计算:
def fib_sequence(n): sequence = [] a, b = 0, 1 for _ in range(n): sequence.append(a) a, b = b, a + b return sequence # 调用示例:生成前10项斐波那契序列 print(fib_sequence(10)) # 输出结果:[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
如果需要生成到某个特定数值为止的序列,只需调整循环终止条件即可。
二、现有代码的列表整合方法
你之前的问题核心是每次循环都重新创建了列表,而非将结果追加到同一个容器中。假设你的fib(i)函数用于返回第i项斐波那契数,按以下方式修改即可:
- 提前初始化一个空列表
- 循环遍历目标范围,将每次的
fib(i)结果追加到列表中 - 最后输出完整列表
示例代码:
# 假设你的fib函数实现如下 def fib(n): if n <= 0: return 0 elif n == 1: return 1 else: return fib(n-1) + fib(n-2) # 整合为单个列表 result = [] # 生成前10项,可按需调整循环范围 for i in range(10): result.append(fib(i)) print(result) # 输出结果:[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
注意:递归版fib函数的时间复杂度较高,若生成的序列项数较多,建议优先使用前面的迭代实现。
内容的提问来源于stack exchange,提问作者Yato kirishima
相关产品推荐
相关产品推荐

