你是不是也被斐波那契数列的代码绕晕过?
一会儿临时变量,一会儿交换顺序,看得头都大了?
别慌!今天我们用最直白的变量名 + 最清晰的顺序,把它拆解得明明白白,新手也能一看就懂!
一、先搞懂:我们要做什么?
目标很简单:写出斐波那契数列 1, 1, 2, 3, 5, 8... 的计算逻辑。
规则只有一句话:从第三个数开始,每个数 = 前两个数相加。
所以,我们需要三个角色:
二、核心代码:就这三行,顺序是灵魂!
你写的这段,就是新手最友好、逻辑最清晰的版本,没有之一!
# 1. 先定好前两个数(数列的开头)num_1 = 1num_2 = 1# 2. 先算新数:第三个数 = 前两个数相加num_3 = num_2 + num_1 # 1 + 1 = 2 ✅# 3. 再挪位置:为了算下一个数,更新前两个数num_1 = num_2 # 原来的第二个数,变成新的第一个数num_2 = num_3 # 刚算出来的新数,变成新的第二个数
为什么顺序绝对不能乱?
我用 “数字接力” 给你打个比方,一看就懂:
先接力(算新数):num_3 = num_2 + num_1
先把 “接力棒” 接过来,算出下一个数。
再挪位置(更新 num_1):num_1 = num_2
原来的第二个数,现在变成第一个数,往前站一步。
最后上岗(更新 num_2):num_2 = num_3
刚算出来的新数,补上第二个数的位置。
❌ 要是把顺序反过来,比如先写num_2 = num_3,再写num_1 = num_2,就会出现两个数都变成新数的情况,接力直接断了,数列就错了!
三、完整可运行代码:直接输出 20 个斐波那契数
把上面的逻辑套进循环,就能一口气算出 20 个数,复制就能运行!
# 初始化前两个数num_1 = 1num_2 = 1# 先打印开头两个数print(num_1, num_2, end=" ")# 循环18次,凑够20个数for _ in range(18): # 1. 算新数 num_3 = num_1 + num_2 # 2. 打印新数 print(num_3, end=" ") # 3. 更新位置,准备下一次计算 num_1 = num_2 num_2 = num_3
运行结果:
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765
四、新手避坑小总结
- 变量名别偷懒:用
num_1/num_2/num_3比t/a/b直观 100 倍,自己看代码都不懵! - 顺序是生命线:先算新数 → 再更新
num_1 → 最后更新num_2,一步都不能乱! - 循环次数别数错:前两个数先打印,后面循环
目标数-2次,就不会多算少算啦。