请用 Python 实现一个程序,输出斐波那契数列的前 10 项。
考察说明
考查 Python 基础语法与循环或递归的简单编程能力。
回答思路
- 【回答框架 1】定义斐波那契数列:第一项为 0(或 1),第二项为 1,后续每项是前两项之和。题目要求前 10 项,基于常见的从 0 开始的版本,序列为 0, 1, 1, 2, 3, 5, 8, 13, 21, 34。
- 【回答框架 2】使用循环实现:初始化 a=0, b=1,循环 10 次,每次打印 a,然后更新 a, b = b, a+b。这种方式时间复杂度 O(n),空间复杂度 O(1),适合简单场景。
- 【回答框架 3】也可用递归实现,但不推荐用于大项数,因为存在大量重复计算。此问题规模小,递归可接受,但循环更高效且直观。
- 【回答框架 4】边界说明:若要求从 1 开始,则序列为 1, 1, 2, 3, 5, 8, 13, 21, 34, 55。面试时应与面试官确认起始定义,或按常规从 0 开始并说明。
- 【回答框架 5】代码示例:def fib(n): a,b=0,1; for i in range(n): print(a); a,b=b,a+b。调用 fib(10) 即输出前 10 项。
- 【关键点 1】循环实现斐波那契数列的时间复杂度为 O(n),空间复杂度 O(1)。
- 【关键点 2】前 10 项(从 0 开始)为 0,1,1,2,3,5,8,13,21,34。
- 【关键点 3】更新变量时使用并行赋值 a,b = b, a+b 可避免临时变量。
- 【关键点 4】递归方法存在重复计算,不适用于大规模计算。
- 【关键点 5】输出前应确认起始项是 0 还是 1,避免语义歧义。
- 【易错点 1】混淆起始项定义,导致输出序列整体偏移。
- 【易错点 2】递归实现时未考虑重复计算,可能引发性能问题,虽然此规模下不明显。
- 【易错点 3】使用临时变量更新时顺序错误,导致结果错误,应使用并行赋值或正确顺序更新。