python实现斐波那契数列的方法示例


Posted in Python onJanuary 12, 2017

介绍

斐波那契数列,又称黄金分割数列,指的是这样一个数列: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*)

python实现斐波那契数列的方法示例

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就不是前两位相加的值,而是已经被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 相关文章推荐
零基础写python爬虫之抓取百度贴吧并存储到本地txt文件改进版
Nov 06 Python
简单解决Python文件中文编码问题
Nov 22 Python
django静态文件加载的方法
May 20 Python
python pygame模块编写飞机大战
Nov 20 Python
详解Python数据分析--Pandas知识点
Mar 23 Python
Python将视频或者动态图gif逐帧保存为图片的方法
Sep 10 Python
完美解决pycharm导入自己写的py文件爆红问题
Feb 12 Python
python isinstance函数用法详解
Feb 13 Python
基于python 凸包问题的解决
Apr 16 Python
Python配置pip国内镜像源的实现
Aug 20 Python
Python Serial串口基本操作(收发数据)
Nov 06 Python
Python词云的正确实现方法实例
May 08 Python
Python爬虫利用cookie实现模拟登陆实例详解
Jan 12 #Python
Python 出现错误TypeError: ‘NoneType’ object is not iterable解决办法
Jan 12 #Python
python获取当前用户的主目录路径方法(推荐)
Jan 12 #Python
Python获取文件所在目录和文件名的方法
Jan 12 #Python
深入理解Python中变量赋值的问题
Jan 12 #Python
Python时间获取及转换知识汇总
Jan 11 #Python
json跨域调用python的方法详解
Jan 11 #Python
You might like
论坛头像随机变换代码
2006/10/09 PHP
php 过滤器实现代码
2010/08/09 PHP
PHP多个文件上传到服务器实例
2014/10/29 PHP
关于Anemometer图形化显示MySQL慢日志的工具搭建及使用的详细介绍
2020/07/13 PHP
function, new function, new Function之间的区别
2007/03/08 Javascript
javascript判断iphone/android手机横竖屏模式的函数
2011/12/20 Javascript
用jquery实现点击栏目背景色改变
2012/12/10 Javascript
JavaScript中getUTCMinutes()方法的使用详解
2015/06/10 Javascript
Bootstrap框架结合jQuery仿百度换肤功能实例解析
2016/09/17 Javascript
详解Webpack DLL用法以及功能
2017/07/11 Javascript
jQuery实现动态显示select下拉列表数据的方法
2018/02/05 jQuery
node 使用 async 控制并发的方法
2018/05/07 Javascript
vue实现固定位置显示功能
2019/05/30 Javascript
JavaScript享元模式原理与用法实例详解
2020/03/09 Javascript
js实现动态时钟
2020/03/12 Javascript
python网络编程学习笔记(二):socket建立网络客户端
2014/06/09 Python
利用Python2下载单张图片与爬取网页图片实例代码
2017/12/25 Python
python使用递归的方式建立二叉树
2019/07/03 Python
python找出因数与质因数的方法
2019/07/25 Python
PyQt5 控件字体样式等设置的实现
2020/05/13 Python
Python用access判断文件是否被占用的实例方法
2020/12/17 Python
python爬虫利用selenium实现自动翻页爬取某鱼数据的思路详解
2020/12/22 Python
python-jwt用户认证食用教学的实现方法
2021/01/19 Python
德国前卫设计师时装在线商店:Luxury Loft
2019/11/04 全球购物
介绍一下Ruby的多线程处理
2013/02/01 面试题
四风问题查摆材料
2014/08/25 职场文书
高等学院职业生涯规划书范文
2014/09/16 职场文书
2014院党委领导班子及其成员群众路线对照检查材料思想汇报
2014/10/04 职场文书
离婚协议书范本2014
2014/10/27 职场文书
2014年终个人工作总结
2014/11/07 职场文书
2017大学生寒假社会实践心得体会
2016/01/14 职场文书
小公司融资,商业计划书的8切记
2019/07/15 职场文书
PHP实现两种排课方式
2021/06/26 PHP
Pygame Event事件模块的详细示例
2021/11/17 Python
收音机爱好者玩机13年,简评其使用过的19台收音机
2022/04/30 无线电
Apache SkyWalking 监控 MySQL Server 实战解析
2022/09/23 Servers