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基本数据类型详细介绍
Mar 11 Python
在Python中使用PIL模块处理图像的教程
Apr 29 Python
使用Python判断质数(素数)的简单方法讲解
May 05 Python
Python的mysql数据库的更新如何实现
Jul 31 Python
解决Python pandas plot输出图形中显示中文乱码问题
Dec 12 Python
浅谈pyqt5中信号与槽的认识
Feb 17 Python
详解从Django Allauth中进行登录改造小结
Dec 18 Python
Python 实现将数组/矩阵转换成Image类
Jan 09 Python
Python 简单计算要求形状面积的实例
Jan 18 Python
vscode调试django项目的方法
Aug 06 Python
python3 hdf5文件 遍历代码
May 19 Python
详解Python魔法方法之描述符类
May 26 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
在Yii2特定页面如何禁用调试工具栏Debug Toolbar详解
2017/08/07 PHP
PHP SESSION机制的理解与实例
2019/03/22 PHP
js或css实现滚动广告的几种方案
2010/01/28 Javascript
javascript 主动派发事件总结
2011/08/09 Javascript
深入理解javascript严格模式(Strict Mode)
2014/11/28 Javascript
jQuery内容过滤选择器用法分析
2015/02/10 Javascript
jQuery结合AJAX之在页面滚动时从服务器加载数据
2015/06/30 Javascript
Javascript实现快速排序(Quicksort)的算法详解
2015/09/06 Javascript
JS获取当前页面名称的简单实例
2016/08/19 Javascript
BootStrap Fileinput的使用教程
2016/12/30 Javascript
Bootstrap modal 多弹窗之叠加关闭阴影遮罩问题的解决方法
2017/02/27 Javascript
在create-react-app中使用css modules的示例代码
2018/07/31 Javascript
jQuery动态生成的元素绑定事件操作实例分析
2019/05/04 jQuery
在Layui 的表格模板中,实现layer父页面和子页面传值交互的方法
2019/09/10 Javascript
Vue打包后访问静态资源路径问题
2019/11/08 Javascript
[01:31](回顾)杀出重围,决战TI之巅
2014/07/01 DOTA
简单介绍Python中的RSS处理
2015/04/13 Python
Python中input与raw_input 之间的比较
2017/08/20 Python
python之消除前缀重命名的方法
2018/10/21 Python
python3利用Socket实现通信的方法示例
2019/05/06 Python
python cv2截取不规则区域图片实例
2019/12/21 Python
基于Python3.7.1无法导入Numpy的解决方式
2020/03/09 Python
使用python求斐波那契数列中第n个数的值示例代码
2020/07/26 Python
浅谈html5增强的页面元素
2016/06/14 HTML / CSS
特罗佩亚包官方网站:Tropea
2017/01/03 全球购物
阿联酋航空假期:Emirates Holidays
2018/03/20 全球购物
英国领先的鞋类零售商:Shoe Zone
2018/12/13 全球购物
武汉东之林科技有限公司机试
2013/09/17 面试题
客户表扬信范文
2014/01/10 职场文书
保证书范文大全
2014/04/28 职场文书
趣味运动会广播稿
2014/09/13 职场文书
2015年幼儿园元旦亲子活动方案
2014/12/09 职场文书
综合素质评价自我评价
2015/03/06 职场文书
MySQL如何解决幻读问题
2021/08/07 MySQL
Python的代理类实现,控制访问和修改属性的权限你都了解吗
2022/03/21 Python
Go语言编译原理之源码调试
2022/08/05 Golang