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中何种情况下需要使用断言
Apr 01 Python
详解Python爬虫的基本写法
Jan 08 Python
详解python的webrtc库实现语音端点检测
May 31 Python
python中使用正则表达式的连接符示例代码
Oct 10 Python
Python实现的FTP通信客户端与服务器端功能示例
Mar 28 Python
Python + selenium + requests实现12306全自动抢票及验证码破解加自动点击功能
Nov 23 Python
python 输出所有大小写字母的方法
Jan 02 Python
浅谈Python 递归算法指归
Aug 22 Python
如何在mac环境中用python处理protobuf
Dec 25 Python
Mac中PyCharm配置Anaconda环境的方法
Mar 04 Python
Python新手学习raise用法
Jun 03 Python
Python实现8种常用抽样方法
Jun 27 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
杏林同学录(九)
2006/10/09 PHP
echo, print, printf 和 sprintf 区别
2006/12/06 PHP
php 执行系统命令的方法
2009/07/07 PHP
关于php mvc开发模式的感想
2011/06/28 PHP
input file获得文件根目录简单实现
2013/04/26 PHP
PHP中判断文件存在使用is_file还是file_exists?
2015/04/03 PHP
编写PHP脚本使WordPress的主题支持Widget侧边栏
2015/12/14 PHP
利用Dojo和JSON建立无限级AJAX动态加载的功能模块树
2007/03/24 Javascript
javascript基础语法学习笔记
2016/01/04 Javascript
Javascript将数值转换为金额格式(分隔千分位和自动增加小数点)
2016/06/22 Javascript
微信小程序 删除项目工程实现步骤
2016/11/10 Javascript
jQuery完成表单验证的实例代码(纯代码)
2017/09/30 jQuery
浅谈React和Redux的连接react-redux
2017/12/04 Javascript
React组件refs的使用详解
2018/02/09 Javascript
详解如何用babel转换es6的class语法
2018/04/03 Javascript
详解vue2.0监听属性的使用心得及搭配计算属性的使用
2018/07/18 Javascript
小程序tab页无法传递参数的方法
2018/08/03 Javascript
基于JS开发微信网页录音功能的实例代码
2019/04/30 Javascript
Vue中props的详解
2019/05/16 Javascript
JavaScript怎样在删除前添加确认弹出框?
2019/05/27 Javascript
js实现坦克移动小游戏
2019/10/28 Javascript
ng-alain的sf如何自定义部件的流程
2020/06/12 Javascript
[01:33]完美世界DOTA2联赛PWL S3 集锦第二期
2020/12/21 DOTA
Python基础教程之tcp socket编程详解及简单实例
2017/02/23 Python
详解Golang 与python中的字符串反转
2017/07/21 Python
在Python中分别打印列表中的每一个元素方法
2018/11/07 Python
python Selenium实现付费音乐批量下载的实现方法
2019/01/24 Python
PyCharm 2020.1版安装破解注册码永久激活(激活到2089年)
2020/09/24 Python
中国汽车租赁行业头部企业:一嗨租车
2019/05/16 全球购物
SEPHORA丝芙兰德国官方购物网站:化妆品、护肤品和香水
2020/01/21 全球购物
乡镇党员干部四风对照检查材料思想汇报
2014/09/27 职场文书
公司出差管理制度范本
2015/08/05 职场文书
MySQL中存储时间的最佳实践指南
2021/07/01 MySQL
Python爬虫中urllib3与urllib的区别是什么
2021/07/21 Python
springboot + mongodb 通过经纬度坐标匹配平面区域的方法
2021/11/01 MongoDB
python_tkinter事件类型详情
2022/03/20 Python