Python实现斐波那契数列的多种方法详解

苏见山
苏见山
发布时间:2026-10-13| 3人浏览过
原创

本文详细介绍Python中实现斐波那契数列的多种方法,包括使用元组生成指定范围数列、通过自定义类实现迭代器以获取无穷数列、利用__getitem__定制类支持下标访问,以及基于while循环的基础代码示例。文章重点解析了Python中变量并行赋值的机制,指出常见的赋值错误及其导致的数列偏差,并提供完整正确的代码实现与运行结果参考。

介绍

斐波那契数列,也被称为黄金分割数列,其具体数值序列为:0、1、1、2、3、5、8、13、21、……。在数学定义中,该数列遵循如下递归规则:

F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*) 。

1. 元组实现

fibs = [0, 1]
for i in range(8):
 fibs.append(fibs[-2] + fibs[-1])

这种方法可以生成一个限定在指定范围内的斐波那契数列列表。

2. 迭代器实现

class Fibs:
 def __init__(self):
  self.a = 0
  self.b = 1

 def next(self):
  self.a, self.b = self.b, self.a + self.b
  return self.a

 def __iter__(self):
  return self

此方法生成的是一个无穷数列,可以通过以下方式访问:

fibs = Fibs()
for f in fibs:
 if f > 1000:
  print f
  break
 else:
  print f

3. 通过定制类实现

class Fib(object):
 def __getitem__(self, n):
  if isinstance(n, int):
   a, b = 1, 1
   for x in range(n):
    a, b = b, a + b
   return a
  elif isinstance(n, slice):
   start = n.start
   stop = n.stop
   a, b = 1, 1
   L = []
   for x in range(stop):
    if x >= start:
     L.append(a)
    a, b = b, a + b
   return L
  else:
   raise TypeError("Fib indices must be integers")

这种方式构建了一个类似序列的数据结构,支持通过下标直接访问数据:

f = Fib()
print f[0:5]
print f[:10]

4. Python实现比较简易的斐波那契数列示例

先展示一个斐波那契数列的输出效果:

0 1 1 2 3 5 8 13 21 34 55 89 144 233...

首先对前两个变量进行赋值:

i, j = 0, 1

当然,也可以采用如下写法:

i = 0
j = 1

接着设定数值范围,这里以10000为上限:

while i < 10000:

然后在while循环中输出变量i并设计核心逻辑:

 print i,
 i, j = j, i+j

在此处需要特别注意:“i, j = i, i+j”这一行代码不能写成如下形式:

i = j
j = i+j

如果写成上述错误形式,j的值将不再是前两项之和,而是使用了已被重新赋值的i和j进行相加,这会导致输出的数列出现如下偏差:

0 1 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192

正确的完整代码如下所示:

i, j = 0, 1
while i < 10000:
 print i,
 i, j = j, i+j

最后展示程序的运行结果:

0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765

总结

以上就是关于利用Python实现斐波那契数列的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。