python3实现斐波那契数列(4种方法)


Posted in Python onJuly 15, 2019

基础版(list方法)

# 比较占内存
w = int(input("输入一个数字还你一个斐波那契数列:"))
list_res = []
def list_n(n):
  if n>=3:
    res=list_n(n-1)+list_n(n-2)
  else:
    res=1
  return res

print("开始")

for i in range(0,w):
  list_res.append(list_n(i+1))
print(list_res)

升级版

# 比较占内存
num =int(input("输入一个数字还你一个斐波那契数列v2.0:"))
list_nums=[1,1]
def calculate(num,list_nums):
  i = 0
  if num>2:
    while i < num:
      list_nums.insert(i+2,list_nums[i]+list_nums[i+1])
      i+=1
    else:
      print("数列已生成")
      print(list_nums)
    return list_nums[num-1]
  else:
    return list_nums[0]

res = calculate(num,list_nums)
print("="*50)
print("第%s个:%s"%(num,res))

最实用版(解包的方式)

#省内存
def fbnq(n):
  a,b=1,1
  if n==1 or n ==2:
    return 1
  else:
    i=3
    while i<=n:
      a,b=b,a+b
      i+=1
    return b

print(fbnq(int(input("输入一个数:"))))

迭代器版

"""实现斐波那契数列"""


class feibo(object):
  def __init__(self, length):
    self.num1 = 0
    self.num2 = 1
    self.num = self.num1
    self.length = length
    self.index = 0

  def __iter__(self):
    return self

  def __next__(self):
    self.num = self.num1
    while True:
      if self.index == self.length:
        raise StopIteration
      self.num1, self.num2 = self.num2, self.num1+self.num2
      self.index += 1
      return self.num


myfbnq = feibo(10)
# print(list(myfbnq))  # 指针位置已到最后一位
for i in myfbnq:
  print(i)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python map和reduce函数用法示例
Feb 26 Python
Python类的动态修改的实例方法
Mar 24 Python
Python实现变量数值交换及判断数组是否含有某个元素的方法
Sep 18 Python
Python2.7.10以上pip更新及其他包的安装教程
Jun 12 Python
对Python实现累加函数的方法详解
Jan 23 Python
使用python实现ftp的文件读写方法
Jul 02 Python
Python figure参数及subplot子图绘制代码
Apr 18 Python
Python实现将元组中的元素作为参数传入函数的操作
Jun 05 Python
keras 读取多标签图像数据方式
Jun 12 Python
python批量处理多DNS多域名的nslookup解析实现
Jun 28 Python
PyQt5 QDockWidget控件应用详解
Aug 12 Python
Numpy中np.random.rand()和np.random.randn() 用法和区别详解
Oct 23 Python
为什么从Python 3.6开始字典有序并效率更高
Jul 15 #Python
django settings.py 配置文件及介绍
Jul 15 #Python
python项目对接钉钉SDK的实现
Jul 15 #Python
用Python识别人脸,人种等各种信息
Jul 15 #Python
django中账号密码验证登陆功能的实现方法
Jul 15 #Python
python tkinter窗口最大化的实现
Jul 15 #Python
在pycharm下设置自己的个性模版方法
Jul 15 #Python
You might like
第十二节 类的自动加载 [12]
2006/10/09 PHP
thinkPHP+PHPExcel实现读取文件日期的方法(含时分秒)
2016/07/07 PHP
ThinkPHP 模板substr的截取字符串函数详解
2017/01/09 PHP
php数据库的增删改查 php与javascript之间的交互
2017/08/31 PHP
PHP设计模式(三)建造者模式Builder实例详解【创建型】
2020/05/02 PHP
枚举JavaScript对象的函数
2006/12/22 Javascript
javascript:以前写的xmlhttp池,代码
2008/05/18 Javascript
JS鼠标事件大全 推荐收藏
2011/11/01 Javascript
javascript中的delete使用详解
2013/04/11 Javascript
Document.location.href和.replace的区别示例介绍
2014/03/04 Javascript
jquery1.10给新增元素绑定事件的方法
2014/03/06 Javascript
javascript实现表格增删改操作实例详解
2015/05/15 Javascript
JavaScript中Object.prototype.toString方法的原理
2016/02/24 Javascript
JS动态给对象添加事件的简单方法
2016/07/19 Javascript
微信小程序 数据封装,参数传值等经验分享
2017/01/09 Javascript
微信小程序配置服务器提示验证token失败的解决方法
2019/04/03 Javascript
Node.JS用纯JavaScript生成图片或滑块式验证码功能
2019/09/12 Javascript
Javascript实现关闭广告效果
2021/01/29 Javascript
[00:32]2018DOTA2亚洲邀请赛VGJ.T出场
2018/04/03 DOTA
[49:05]Newbee vs TNC 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python中decorator使用实例
2015/04/14 Python
python在指定目录下查找gif文件的方法
2015/05/04 Python
浅析AST抽象语法树及Python代码实现
2016/06/06 Python
Python 记录日志的灵活性和可配置性介绍
2018/02/27 Python
用python中的matplotlib绘制方程图像代码
2019/11/21 Python
Html5 APP中监听返回事件处理的方法示例
2018/03/15 HTML / CSS
彪马日本官网:PUMA日本
2019/01/31 全球购物
农场厂长岗位职责
2013/12/28 职场文书
学校七一活动方案
2014/01/19 职场文书
七年级数学教学反思
2014/01/22 职场文书
房产转让协议书(2014版)
2014/09/30 职场文书
2014年测量员工作总结
2014/12/12 职场文书
二手房购房意向书
2015/05/09 职场文书
2015年行政管理人员工作总结
2015/10/15 职场文书
小学班长竞选稿
2015/11/20 职场文书
Mysql MVCC机制原理详解
2021/04/20 MySQL