专题知识点:斐波那契数列
(Fibonacci sequence),又称黄金分割数列,由意大利数学家莱昂纳多.斐波那契(Leonardo Fibonacci)在13世纪提出。
该数列具有如下特点:
初始值:数列的前两项通常定义为 0 和 1,即 F(0) = 0,F(1) = 1
递推关系:从第三项开始,每一项都等于前两项之和,用数学公式表示为 F(n)=F(n - 1)+F(n - 2),比如:0 1 1 2 3 5 8 13 21 34……等等。
方法1:使用递归实现斐波那契数列
# 递归核心思想:把问题拆解为更小的相同问题,直到触达边界条件后回溯计算def fib1(n): # 边界条件1:第0项的值为0 if n == 0: return 0 # 边界条件2:第1项的值为1 elif n == 1: return 1 # 递归调用:第n项 = 第n-1项 + 第n-2项(递推关系) return fib1(n-1) + fib1(n-2)# 测试递归方法:计算第6项的斐波那契数n = 6result = fib1(n)print("第",n,"项的值为:",result) # 输出:第 6 项的值为:8
方法2:不使用递归(迭代法)实现
deffib2(n):# 初始化循环计数器 i = 0# a表示当前项,b表示下一项;初始值对应F(0)=0,F(1)=1 a, b = 0, 1# 循环n次,逐步计算每一项的值while i < n:# 注释掉的代码:如果需要打印每一项,可取消注释# print(a,end=" ")# 核心逻辑:更新a和b的值# a变为原来的b(下一项),b变为原来的a+b(新的下一项) a, b = b, a + b# 计数器加1,推进循环 i += 1# 循环结束后,a即为第n项的斐波那契数return a# 交互式输入:让用户输入要计算的项数n = int(input("请输入n的值:"))# 调用迭代方法并输出结果print("斐波那契数列的第"+str(n)+"项为:",fib2(n))# 输出:如果输入6,则输出 斐波那契数列的前8项为: 21
知识拓展:使用列表来存储
def get_fib_n(n): if n < 0: return "输入错误" fib = [0, 1] for i in range(2, n+1): fib.append(fib[i-1] + fib[i-2]) return fib[n]# 测试:获取第6项的值print("第6项的值:", get_fib_n(6)) # 输出:第6项的值:8
知识总结:
列表实现斐波那契数列的核心是存储每一项结果,通过索引调用前两项计算当前项,逻辑清晰且便于复用数列数据。
相比递归,列表法无重复计算,效率和迭代法一致;
相比单纯的迭代法,列表法能保留完整数列,适合需要使用多项数据的场景。
核心步骤:初始化列表→添加初始项→循环计算并追加后续项→返回列表(或指定项)。