用for循环迭代计算斐波那契数列,仅用a、b两个变量滚动更新,时间复杂度O(n),空间复杂度O(1);n=0返回0,n=1返回1,n≥2时循环n−1次得Fₙ。

用 for 循环实现斐波那契数列的迭代计算,核心是只保留最近两个数值,避免递归或数组存储全部中间项,从而将空间复杂度从 O(n) 降到 O(1)。
只用两个变量滚动更新
斐波那契定义为 F(0)=0, F(1)=1, F(n)=F(n−1)+F(n−2)。迭代时无需记住所有历史值,只需上一项和上上一项:
- 初始化 a = 0(F₀),b = 1(F₁)
- 每轮循环计算 c = a + b,然后更新 a, b = b, c
- 重复 n−1 次即可得到 Fₙ(n ≥ 1)
处理边界情况并统一接口
注意 n=0 和 n=1 的特例,让函数对任意非负整数输入都健壮:
- 若 n == 0,直接返回 0
- 若 n == 1,直接返回 1
- 否则从 i=2 开始循环到 n,每次更新两个状态变量
- 这样避免了数组索引越界或无效位移,也省去条件分支嵌套
生成前 n 项时仍保持 O(1) 额外空间
如果目标是输出前 n 项(如打印或收集),可边算边输出,不缓存整个序列:
- 先输出 F₀、F₁(若 n ≥ 1)
- 后续每轮计算出新值后立即输出/存入结果列表(仅当必须保存时才 append,否则跳过)
- 即使要返回列表,也建议调用方自行决定是否保留——计算逻辑本身不承担存储责任
Python 示例代码(无额外数组,仅 3 个变量)
def fib_iter(n):
if n == 0: return 0
if n == 1: return 1
a, b = 0, 1
for _ in range(2, n + 1):
a, b = b, a + b
return b
该实现时间复杂度 O(n),空间复杂度严格 O(1),无递归栈、无数组扩容、无冗余变量。

















