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 相关文章推荐
Windows下Eclipse+PyDev配置Python+PyQt4开发环境
May 17 Python
Python正则捕获操作示例
Aug 19 Python
python实现微信自动回复功能
Apr 11 Python
Django如何开发简单的查询接口详解
May 17 Python
对YOLOv3模型调用时候的python接口详解
Aug 26 Python
详解Anconda环境下载python包的教程(图形界面+命令行+pycharm安装)
Nov 11 Python
Python 中@property的用法详解
Jan 15 Python
python3排序的实例方法
Oct 20 Python
python利用opencv保存、播放视频
Nov 02 Python
关于Python OS模块常用文件/目录函数详解
Jul 01 Python
python中if和elif的区别介绍
Nov 07 Python
python读取mat文件生成h5文件的实现
Jul 15 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
PHP实现文件上传操作和封装
2020/03/04 PHP
基础的prototype.js常用函数及其用法
2007/03/10 Javascript
css图片自适应大小
2007/11/28 Javascript
javascript标签在页面中的位置探讨
2013/04/11 Javascript
jquery实现人性化的有选择性禁用鼠标右键
2014/06/30 Javascript
原生javascript实现的分页插件pagenav
2014/08/28 Javascript
js实现图片轮播效果
2015/12/19 Javascript
原生js代码实现图片放大境效果
2016/10/30 Javascript
使用Vue完成一个简单的todolist的方法
2017/12/01 Javascript
vue-baidu-map 进入页面自动定位的解决方案(推荐)
2018/04/28 Javascript
linux 后台运行node服务指令方法
2018/05/23 Javascript
基于Vue2实现简易的省市区县三级联动组件效果
2018/11/05 Javascript
JS实现的合并两个有序链表算法示例
2019/02/25 Javascript
angular 实现同步验证器跨字段验证的方法
2019/04/11 Javascript
vue模仿网易云音乐的单页面应用
2019/04/24 Javascript
Vue中实现权限控制的方法示例
2019/06/07 Javascript
Vue中消息横向滚动时setInterval清不掉的问题及解决方法
2019/08/23 Javascript
vue-cli2与vue-cli3在一台电脑共存的实现方法
2019/09/25 Javascript
JavaScript实现省市联动效果
2019/11/22 Javascript
在 Vue 中编写 SVG 图标组件的方法
2020/02/24 Javascript
一篇文章带你使用Typescript封装一个Vue组件(简单易懂)
2020/06/05 Javascript
用Javascript实现发送短信验证码间隔功能
2021/02/08 Javascript
[53:21]2014 DOTA2国际邀请赛中国区预选赛5.21 DT VS LGD-CDEC
2014/05/22 DOTA
[00:52]玛尔斯技能全介绍
2019/03/06 DOTA
Python中操作文件之write()方法的使用教程
2015/05/25 Python
python编程嵌套函数实例代码
2018/02/11 Python
python爬取淘宝商品详情页数据
2018/02/23 Python
手把手教你Python yLab的绘制折线图的画法
2019/10/23 Python
Pytorch模型转onnx模型实例
2020/01/15 Python
python+selenium+chrome批量文件下载并自动创建文件夹实例
2020/04/27 Python
django教程如何自学
2020/07/31 Python
音乐教学案例
2014/01/30 职场文书
对标管理实施方案
2014/03/12 职场文书
2014年房产销售工作总结
2014/12/08 职场文书
拾金不昧表扬信
2015/01/16 职场文书
八达岭长城导游词
2015/01/30 职场文书