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中基础的socket编程实战攻略
Jun 01 Python
python爬取网页内容转换为PDF文件
Jul 28 Python
对python 数据处理中的LabelEncoder 和 OneHotEncoder详解
Jul 11 Python
python for 循环获取index索引的方法
Feb 01 Python
pyinstaller打包单个exe后无法执行错误的解决方法
Jun 21 Python
解决Django migrate不能发现app.models的表问题
Aug 31 Python
面向对象学习之pygame坦克大战
Sep 11 Python
翻转数列python实现,求前n项和,并能输出整个数列的案例
May 03 Python
Tensorflow tensor 数学运算和逻辑运算方式
Jun 30 Python
如何基于Python爬取隐秘的角落评论
Jul 02 Python
Python开发入门——迭代的基本使用
Sep 03 Python
Python SMTP发送电子邮件的示例
Sep 23 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
一个用php3编写的简单计数器
2006/10/09 PHP
win7下memCache的安装过程(具体操作步骤)
2013/06/28 PHP
基于flush()不能按顺序输出时的解决办法
2013/06/29 PHP
CodeIgniter分页类pagination使用方法示例
2016/03/28 PHP
php强制下载文件函数
2016/08/24 PHP
详解PHP发送邮件知识点
2018/05/06 PHP
由浅到深了解JavaScript类
2006/09/08 Javascript
javascript基于jQuery的表格悬停变色/恢复,表格点击变色/恢复,点击行选Checkbox
2008/08/05 Javascript
Jquery Ajax学习实例3 向WebService发出请求,调用方法返回数据
2010/03/16 Javascript
鼠标滑在标题上显示图片的JS代码
2013/11/19 Javascript
js获取光标位置和设置文本框光标位置示例代码
2014/01/09 Javascript
jQuery 回调函数(callback)的使用和基础
2015/02/26 Javascript
使用javascript提交form表单方法汇总
2015/06/25 Javascript
学习JavaScript设计模式之状态模式
2016/01/08 Javascript
原生js实现弹出层登录拖拽功能
2016/12/05 Javascript
jquery实现输入框实时输入触发事件代码
2016/12/21 Javascript
老生常谈js中0到底是 true 还是 false
2017/03/08 Javascript
JS闭包可被利用的常见场景小结
2017/04/09 Javascript
深入理解JavaScript继承的多种方式和优缺点
2017/05/12 Javascript
Angular 作用域scope的具体使用
2017/12/11 Javascript
功能完善的小程序日历组件的实现
2020/03/31 Javascript
[01:12:44]VG vs Mineski Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
用Python脚本生成Android SALT扰码的方法
2013/09/18 Python
python和shell监控linux服务器的详细代码
2018/06/22 Python
Python标准库:内置函数max(iterable, *[, key, default])说明
2020/04/25 Python
Python requests.post方法中data与json参数区别详解
2020/04/30 Python
关于Python解包知识点总结
2020/05/05 Python
Kipling凯浦林美国官网:世界著名时尚休闲包袋品牌
2016/08/24 全球购物
法国面料和小百货在线商店:Mondial Tissus
2019/03/23 全球购物
经典的班主任推荐信
2013/10/28 职场文书
创业计划书六个要素
2013/12/26 职场文书
地道战观后感500字
2015/06/04 职场文书
在职证明范本
2015/06/15 职场文书
JavaScript 中for/of,for/in 的详细介绍
2021/11/17 Javascript
Python+Selenium自动化环境搭建与操作基础详解
2022/03/13 Python
如何更改Win11声音输出设备?Win11声音输出设备四种更改方法
2022/04/08 数码科技