C语言实现斐波那契序列优化:双变量递推替代手动定义大量变量
C语言斐波那契双变量递推优化方案
原有代码问题
你当前的硬编码实现存在明显冗余:手动定义了十余个独立变量存储每一步的计算结果,逐行编写递推逻辑,代码扩展性极差,只能输出固定数量的序列项。C语言完全支持和Python、C++逻辑一致的滚动递推实现,不需要冗余的中间变量。
核心实现逻辑
双变量滚动递推的原理非常简单:
- 初始化两个变量存储序列的前两项
- 每轮计算得到下一项后,同步更新两个变量的值,让其分别指向递推链上的后一位
- 用循环控制递推轮数,无需手动编写每一步计算
优化后代码
以下代码输出结果和你提供的样例完全一致,仅用3个int变量就完成了全部计算:
#include <stdio.h> int main() { int prev_prev = 1; // 存储往前数第二项的值 int prev = 1; // 存储前一项的值 int count; // 循环18次,输出和原代码数量相同的序列项 for (count = 0; count < 18; count++) { int current = prev_prev + prev; printf("%d\n", current); // 滚动更新变量,为下一轮计算做准备 prev_prev = prev; prev = current; } return 0; }
运行结果
代码执行后输出和原代码完全匹配:
2
3
5
8
13
21
34
55
89
144
233
377
610
987
1597
2584
4181
6765
注意事项
- 如果你需要输出更多项,仅需要修改for循环的终止条件即可,比如将
count < 18改为count < 40就能输出40项,不需要新增任何变量定义 - 斐波那契数列增长速度极快,当计算项数超过40时,
int类型会因为数值溢出出现错误结果,此时可以将变量类型替换为long long扩大数值存储范围 - 该实现时间复杂度为O(n),额外空间复杂度为O(1),是迭代实现斐波那契的最优常规方案,和Python中的高效迭代实现逻辑完全一致
内容的提问来源于stack exchange,提问作者anatolii123
相关产品推荐
相关产品推荐

