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 17 Python
python kmeans聚类简单介绍和实现代码
Feb 23 Python
python如何把嵌套列表转变成普通列表
Mar 20 Python
Python实现的建造者模式示例
Aug 06 Python
Django项目使用CircleCI的方法示例
Jul 14 Python
python脚本调用iftop 统计业务应用流量的思路详解
Oct 11 Python
python实现12306登录并保存cookie的方法示例
Dec 17 Python
Python如何实现的二分查找算法
May 27 Python
python属于解释型语言么
Jun 15 Python
在keras中对单一输入图像进行预测并返回预测结果操作
Jul 09 Python
python向xls写入数据(包括合并,边框,对齐,列宽)
Feb 02 Python
基于Python实现股票收益率分析
Apr 02 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查询网站的PR值
2013/10/30 PHP
详解Yii2 之 生成 URL 的方法
2017/06/16 PHP
JS的事件绑定深入认识
2014/06/26 Javascript
Iframe实现跨浏览器自适应高度解决方法
2014/09/02 Javascript
使用JS+plupload直接批量上传图片到又拍云
2014/12/01 Javascript
JavaScript判断前缀、后缀是否是空格的方法
2015/04/15 Javascript
使用堆实现Top K算法(JS实现)
2015/12/25 Javascript
利用css+原生js制作简单的钟表
2020/04/07 Javascript
javascript获取网页各种高宽及位置的方法总结
2016/07/27 Javascript
JavaScript代码里的判断小结
2016/08/22 Javascript
详解微信第三方小程序代开发
2017/06/23 Javascript
JavaScript闭包_动力节点Java学院整理
2017/06/27 Javascript
原生JS实现图片无缝滚动方法(附带封装的运动框架)
2017/10/01 Javascript
seaJs使用心得之exports与module.exports的区别实例分析
2017/10/13 Javascript
初探js和简单隐藏效果的实例
2017/11/23 Javascript
微信小程序文章详情页面实现代码
2018/09/10 Javascript
vue实现固定位置显示功能
2019/05/30 Javascript
layui表格内放置图片,并点击放大的实例
2019/09/10 Javascript
小程序使用watch监听数据变化的方法详解
2019/09/20 Javascript
vue实现购物车的小练习
2020/12/21 Vue.js
Python面向对象之多态原理与用法案例分析
2019/12/30 Python
Python识别验证码的实现示例
2020/09/30 Python
Giglio英国站:意大利奢侈品购物网
2018/03/06 全球购物
Lacoste澳大利亚官网:服装、鞋类及配饰
2018/11/14 全球购物
机电工程学生自荐信范文
2013/12/07 职场文书
农业资源与环境专业自荐信范文
2013/12/30 职场文书
学生会离职感言
2014/02/11 职场文书
酒店秘书求职信范文
2014/02/17 职场文书
计算机维护专业推荐信
2014/02/27 职场文书
建筑工地质量标语
2014/06/12 职场文书
单位作风建设剖析材料
2014/10/11 职场文书
自我查摆剖析材料
2014/10/11 职场文书
2014年加油站工作总结
2014/12/04 职场文书
教师工作能力自我评价
2015/03/04 职场文书
Python数据清洗工具之Numpy的基本操作
2021/04/22 Python
JVM之方法返回地址详解
2022/02/28 Java/Android