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搭建服务器实现两个Android客户端间收发消息
Apr 12 Python
详谈python在windows中的文件路径问题
Apr 28 Python
利用python实现简易版的贪吃蛇游戏(面向python小白)
Dec 30 Python
Python实现的列表排序、反转操作示例
Mar 13 Python
python中字符串数组逆序排列方法总结
Jun 23 Python
django 信号调度机制详解
Jul 19 Python
利用python实现周期财务统计可视化
Aug 25 Python
3行Python代码实现图像照片抠图和换底色的方法
Oct 10 Python
tensorflow之自定义神经网络层实例
Feb 07 Python
深入浅析python3 依赖倒置原则(示例代码)
Jul 09 Python
分享提高 Python 代码的可读性的技巧
Mar 03 Python
Python接口自动化之文件上传/下载接口详解
Apr 05 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中filter函数校验数据的方法详解
2015/07/31 PHP
PHP表单数据写入MySQL数据库的代码
2016/05/31 PHP
PHP大文件分块上传功能实例详解
2019/07/22 PHP
javascript对象的property和prototype是这样一种关系
2007/03/24 Javascript
指定js可访问其它域名的cookie的方法
2007/09/18 Javascript
JavaScript Event学习第七章 事件属性
2010/02/07 Javascript
关于juqery radio写法的兼容性问题(新老版本jquery)
2010/06/14 Javascript
JavaScript函数作用域链分析
2015/02/13 Javascript
JavaScript实现把数字转换成中文
2015/06/29 Javascript
基于javascript显示当前时间以及倒计时功能
2016/03/18 Javascript
JavaScript中匿名函数的用法及优缺点详解
2016/06/01 Javascript
JavaScript获取当前url根目录(路径)
2016/06/17 Javascript
微信小程序 限制1M的瘦身技巧与方法详解
2017/01/06 Javascript
bootstrap中模态框、模态框的属性实例详解
2017/02/17 Javascript
简单实现js进度条加载效果
2020/03/25 Javascript
vue组件发布到npm简单步骤
2017/11/30 Javascript
node中的密码安全(加密)
2018/09/17 Javascript
js实现删除li标签一行内容
2019/04/16 Javascript
Python使用Flask框架获取当前查询参数的方法
2015/03/21 Python
基于Python的关键字监控及告警
2017/07/06 Python
Python元组知识点总结
2019/02/18 Python
浅谈cookie和localStorage那些事
2019/08/27 HTML / CSS
非凡女性奢华谦虚风格:The Modist
2017/10/28 全球购物
小米旗下精品生活电商平台:小米有品
2018/12/18 全球购物
C#和SQL Server的面试题
2016/08/12 面试题
高校毕业生自我鉴定
2013/10/27 职场文书
幼儿园美术教学反思
2014/01/31 职场文书
学习全国两会精神心得体会范文
2014/03/17 职场文书
多媒体编辑专业毕业生求职信
2014/06/13 职场文书
乡镇领导班子四风整顿行动工作汇报
2014/10/25 职场文书
5.12护士节活动总结
2015/02/10 职场文书
考研经验交流会策划书
2015/11/02 职场文书
互联网创业商业模式以及赚钱法则有哪些?
2019/10/12 职场文书
2019年大学生暑期社会实践调查报告模板
2019/11/07 职场文书
 分享一个Python 遇到数据库超好用的模块
2022/04/06 Python
详解如何使用Nginx解决跨域问题
2022/05/06 Servers