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做文本按行去重的实现方法
Oct 19 Python
微信 用脚本查看是否被微信好友删除
Oct 28 Python
Python贪吃蛇游戏编写代码
Oct 26 Python
python中requests和https使用简单示例
Jan 18 Python
python爬虫爬取某站上海租房图片
Feb 04 Python
django js实现部分页面刷新的示例代码
May 28 Python
详解Python装饰器
Mar 25 Python
计算机二级python学习教程(1) 教大家如何学习python
May 16 Python
Win10下配置tensorflow-gpu的详细教程(无VS2015/2017)
Jul 14 Python
python为什么要安装到c盘
Jul 20 Python
Python 使用Opencv实现目标检测与识别的示例代码
Sep 08 Python
Django REST framework 限流功能的使用
Jun 24 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
php 随机记录mysql rand()造成CPU 100%的解决办法
2010/05/18 PHP
php 传值赋值与引用赋值的区别
2010/12/29 PHP
WordPress导航菜单的滚动和淡入淡出效果的实现要点
2015/12/14 PHP
CodeIgniter控制器之业务逻辑实例分析
2016/01/20 PHP
PHP入门教程之数学运算技巧总结
2016/09/11 PHP
根据key删除数组中指定的元素实现方法
2017/03/02 PHP
用jQuery实现检测浏览器及版本的脚本代码
2008/01/22 Javascript
JavaScript Event学习第八章 事件的顺序
2010/02/07 Javascript
JS localStorage实现本地缓存的方法
2013/06/22 Javascript
jQuery:delegate中select()不起作用的解决方法(实例讲解)
2014/01/26 Javascript
动态设置form表单的action属性的值的简单方法
2016/05/25 Javascript
jQuery 常见小例汇总
2016/12/14 Javascript
使用Math.max,Math.min获取数组中的最值实例
2017/04/25 Javascript
vue子组件使用自定义事件向父组件传递数据
2017/05/27 Javascript
webpack手动配置React开发环境的步骤
2018/07/02 Javascript
vue实现学生录入系统之添加删除功能
2018/07/11 Javascript
为什么要使用Vuex的介绍
2019/01/19 Javascript
关于js陀螺仪的理解分析
2019/04/11 Javascript
react-intl实现React国际化多语言的方法
2020/09/27 Javascript
js实现菜单跳转效果
2020/12/11 Javascript
[01:07:20]DOTA2-DPC中国联赛 正赛 Dynasty vs XG BO3 第二场 2月2日
2021/03/11 DOTA
Python 自动安装 Rising 杀毒软件
2009/04/24 Python
Python抓取框架Scrapy爬虫入门:页面提取
2017/12/01 Python
tensorflow创建变量以及根据名称查找变量
2018/03/10 Python
python实现的按要求生成手机号功能示例
2019/10/08 Python
Python3 pickle对象串行化代码实例解析
2020/03/23 Python
澳大利亚快时尚鞋类市场:Billini
2018/05/20 全球购物
毕业班联欢会主持词
2014/03/27 职场文书
最新大学生创业计划书写作攻略
2014/04/02 职场文书
继承公证书样本
2014/04/04 职场文书
关于感恩的演讲稿500字
2014/08/26 职场文书
关于工作经历的证明书
2014/10/11 职场文书
高一语文教学反思
2016/02/16 职场文书
使用Python的开发框架Brownie部署以太坊智能合约
2021/05/28 Python
SpringBoot工程下使用OpenFeign的坑及解决
2021/07/02 Java/Android
利用uni-app生成微信小程序的踩坑记录
2022/04/05 Javascript