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分割TXT文件成4K的TXT文件
May 23 Python
在Django的模型和公用函数中使用惰性翻译对象
Jul 27 Python
python编程实现希尔排序
Apr 13 Python
Python实现一个Git日志统计分析的小工具
Dec 14 Python
Python语言生成水仙花数代码示例
Dec 18 Python
python opencv之SURF算法示例
Feb 24 Python
python print 按逗号或空格分隔的方法
May 02 Python
python清除字符串中间空格的实例讲解
May 11 Python
对python制作自己的数据集实例讲解
Dec 12 Python
python如何求数组连续最大和的示例代码
Feb 04 Python
Pythonic版二分查找实现过程原理解析
Aug 11 Python
python神经网络学习 使用Keras进行简单分类
May 04 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 park、unpark、ord 函数使用方法(二进制流接口应用实例)
2010/10/19 PHP
dedecms函数分享之获取某一栏目所有子栏目
2014/05/19 PHP
Sublime里直接运行PHP配置方法
2014/11/28 PHP
php判断两个日期之间相差多少个月份的方法
2015/06/18 PHP
PHP生成图像验证码的方法小结(2种方法)
2016/07/18 PHP
JQuery文本改变触发事件如聚焦事件、失焦事件
2014/01/15 Javascript
原生JavaScript生成GUID的实现示例
2014/09/05 Javascript
jquery操作对象数组元素方法详解
2014/11/26 Javascript
使用jQuery实现验证上传图片的格式与大小
2014/12/03 Javascript
nodejs开发微博实例
2015/03/25 NodeJs
javascript获取当前的时间戳的方法汇总
2015/07/26 Javascript
javascript常见数据验证插件大全
2015/08/03 Javascript
javascript Slip.js实现整屏滑动的手机网页
2015/11/25 Javascript
AngularJS使用angular-formly进行表单验证
2015/12/27 Javascript
js类式继承与原型式继承详解
2016/04/07 Javascript
浅谈几种常用的JS类定义方法
2016/06/08 Javascript
vue脚手架及vue-router基本使用
2018/04/09 Javascript
说说如何利用 Node.js 代理解决跨域问题
2019/04/22 Javascript
js比较两个单独的数组或对象是否相等的实例代码
2019/04/28 Javascript
解决vue项目本地启动时无法携带cookie的问题
2021/02/06 Vue.js
python发送HTTP请求的方法小结
2015/07/08 Python
Python 详解基本语法_函数_返回值
2017/01/22 Python
Python 专题三 字符串的基础知识
2017/03/19 Python
动态规划之矩阵连乘问题Python实现方法
2017/11/27 Python
vscode 远程调试python的方法
2017/12/01 Python
Python3.9新特性详解
2020/10/10 Python
python利用proxybroker构建爬虫免费IP代理池的实现
2021/02/21 Python
英国品牌男装折扣网站:Brown Bag
2018/03/08 全球购物
New Era英国官网:美国棒球帽品牌
2018/03/21 全球购物
教育技术职业规划范文
2014/03/04 职场文书
迎新晚会主持词
2014/03/24 职场文书
保护环境倡议书
2014/04/14 职场文书
《鲁班和橹板》教学反思
2014/04/27 职场文书
导游词之桂林
2019/08/20 职场文书
Mysql官方性能测试工具mysqlslap的使用简介
2021/05/21 MySQL
如何设置多台电脑共享打印机?多台电脑共享打印机的方法
2022/04/08 数码科技