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爬虫功能
Dec 31 Python
举例简单讲解Python中的数据存储模块shelve的用法
Mar 03 Python
Python实现的中国剩余定理算法示例
Aug 05 Python
Python登录并获取CSDN博客所有文章列表代码实例
Dec 28 Python
将TensorFlow的模型网络导出为单个文件的方法
Apr 23 Python
Python 利用内置set函数对字符串和列表进行去重的方法
Jun 29 Python
Python3 log10()函数简单用法
Feb 19 Python
Python 获取 datax 执行结果保存到数据库的方法
Jul 11 Python
浅谈python图片处理Image和skimage的区别
Aug 04 Python
Spring Boot中使用IntelliJ IDEA插件EasyCode一键生成代码详细方法
Mar 20 Python
如何理解Python中包的引入
May 29 Python
使用Pytorch训练two-head网络的操作
May 28 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+JS无限级可伸缩菜单详解(简单易懂)
2007/01/02 PHP
PHP用星号隐藏部份用户名、身份证、IP、手机号等实例
2014/04/08 PHP
详解PHP中的mb_detect_encoding函数使用方法
2015/08/18 PHP
js动态加载以及确定加载完成的代码
2011/07/31 Javascript
jQuery中innerWidth()方法用法实例
2015/01/19 Javascript
javascript实现控制浏览器全屏
2015/03/30 Javascript
js右下角弹出提示框示例代码
2016/01/12 Javascript
快速掌握Node.js中setTimeout和setInterval的使用方法
2016/03/21 Javascript
JavaScript入门系列之知识点总结
2016/03/24 Javascript
完全深入学习Bootstrap表单
2016/11/28 Javascript
JavaScript中利用for循环遍历数组
2017/01/15 Javascript
浅谈 vue 中的 watcher
2017/12/04 Javascript
微信小程序slider组件使用详解
2018/01/31 Javascript
在Node.js下运用MQTT协议实现即时通讯及离线推送的方法
2019/01/24 Javascript
[03:55]2016国际邀请赛中国区预选赛首日TOP10精彩集锦
2016/06/27 DOTA
[53:43]VP vs NewBee Supermajor 胜者组 BO3 第三场 6.5
2018/06/06 DOTA
详解Django中的form库的使用
2015/07/18 Python
解决PyCharm的Python.exe已经停止工作的问题
2018/11/29 Python
flask-restful使用总结
2018/12/04 Python
Ubuntu下升级 python3.7.1流程备忘(推荐)
2018/12/10 Python
python sorted函数的小练习及解答
2019/09/18 Python
Python内置类型性能分析过程实例
2020/01/29 Python
python实现马丁策略的实例详解
2021/01/15 Python
CSS3实现复选框动画特效示例代码
2016/09/27 HTML / CSS
Calphalon美国官网:美国顶级锅具品牌
2020/02/05 全球购物
Unix如何在一行中运行多个命令
2015/05/29 面试题
商务专员岗位职责
2013/11/23 职场文书
《桂林山水》教学反思
2014/02/08 职场文书
国旗下的演讲稿
2014/05/08 职场文书
药剂专业毕业生求职信
2014/06/24 职场文书
班级心理活动总结
2014/07/04 职场文书
2014副镇长民主生活会个人对照检查材料思想汇报
2014/09/30 职场文书
教师节横幅标语
2014/10/08 职场文书
社区四风存在问题及整改措施
2014/10/26 职场文书
田径运动会广播稿
2015/08/19 职场文书
深入理解go slice结构
2021/09/15 Golang