位置: 编程技术 - 正文

Python中使用装饰器来优化尾递归的示例

编辑:rootadmin

推荐整理分享Python中使用装饰器来优化尾递归的示例,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

尾递归简介尾递归是函数返回最后一个操作是递归调用,则该函数是尾递归。递归是线性的比如factorial函数每一次调用都会创建一个新的栈(last-in-first-out)通过不断的压栈,来创建递归, 很容易导致栈的溢出。而尾递归则使用当前栈通过数据覆盖来优化递归函数。阶乘函数factorial, 通过把计算值传递的方法完成了尾递归。但是python不支出编译器优化尾递归所以当递归多次的话还是会报错(学习用)。

eg:

尾递归优化这里用到了斐波那契数来作为例子.线性递归的算法由于太过一低效就被我们Pass掉了,我们先来看尾递过方式的调用:

这段程序我们来测试一下,调用 Fib()结果:

如果我们用Fib(),结果,茶几了,如下:

Python中使用装饰器来优化尾递归的示例

好了,现在我们来尾递归优化

我们给刚才的Fib函数增加一个Decorator,如下:

恩,就是这个@tail_call_optimized的装饰器 ,这个装饰器使Python神奇的打破了调用栈的限制。

这下即使我们Fib(),也能在ms跑出结果(ms是以前博文提到那台元的上网本跑出来的结果)

不卖关子了,下面我们来看看这段神奇的代码:

使用的方法前面已经展示了,令我感到大开眼界的是,作者用了抛出异常然后自己捕获的方式来打破调用栈的增长,简直是太匪夷所思了。而且效率问题,和直接尾递归Fib相比大概造成了五倍的时间开销。

最后很不可思议的,尾递归优化的目的达成了。

在阿里云服务器上配置CentOS+Nginx+Python+Flask环境 项目运行环境阿里云(单核CPU,1G内存,Ubuntu.x带宽1Mbps),具体购买和ssh连接阿里云本文不做描述。实用工具首先进入阿里云后先要升级下apt-get,并下载所

python3实现暴力穷举博客园密码 我之前想写路由器的密码暴力破解器,我手上只有极路由,发现极路由有安全限制,只能允许连续密码错误,所以我改拿博客园练手。博客园的博客有

python3 实现的人人影视网站自动签到 这是一个自动化程度较高的程序,运行本程序后会从chrome中读取cookies用于登录人人影视签到,并且会自动添加一个windows任务计划,这个任务计划每天下

标签: Python中使用装饰器来优化尾递归的示例

本文链接地址:https://www.jiuchutong.com/biancheng/387683.html 转载请保留说明!

上一篇:举例讲解Python面向对象编程中类的继承(python面向)

下一篇:在阿里云服务器上配置CentOS+Nginx+Python+Flask环境(阿里云服务器使用教程)

  • 海关进口啥意思
  • 劳务报酬个税的税率是多少
  • 免税发票是普票还是专票
  • 车间停止生产时间怎么计算
  • 预提费用在资产负债表哪个科目
  • 哪些津贴不扣税
  • 报销用的发票抬头写什么
  • 借贷必相等为什么是错的
  • 收回个人社会保险费是否可以冲红管理费用
  • 累计纳税工资是什么意思
  • 深圳重工业企业有哪些
  • 收到低值易耗品的专票但未付款
  • 长期挂账应收账款怎么调
  • 当月确认收入下年怎么算
  • 中小微企业优惠政策落实措施
  • 固定资产清理先提折旧再清理吗
  • 发票认证后1年还能用吗
  • 医疗器械销售初次拜访话术
  • 单位员工借款的认定
  • 小规模增值税多少个点
  • 增值税普通发票对方作废了怎么办?
  • 增值税抵扣凭证包括桥闸通行费发票
  • 工作量法计提折旧会计分录
  • 行政事业单位2014年前已交社保费
  • 2016年的发票2019年还能开红字吗
  • 转让集体土地所有权
  • 差额纳税和全额纳税比例
  • 企业卖固定资产
  • 成品油发票长什么样
  • 内存坏了电脑会黑屏吗
  • adsl灯一直闪烁
  • 其他业务收入怎么申报增值税
  • 收不回的应收账款分录
  • 水电费分割单会计分录
  • 资产负债表利润表的勾稽关系
  • 自动驾驶汽车决策与控制pdf
  • 购买商品发生的费用计入
  • 第三方车主
  • mysql基本语法
  • 新政府会计制度与旧制度区别
  • 帝国cms调用api接口
  • mongodb查询表数据
  • 公司旅游费会计分录
  • 无形资产摊销会计凭证
  • 资产处置损益影响损益吗
  • 企业应付账款的借方余额反映的是
  • 给客户送礼计入成本吗
  • 其他收益和其他综合收益属于什么科目
  • 构建固定资产的借款利息资本化文件依据
  • 印花税是怎么缴纳
  • 固定资产出售的收入属于收入吗
  • 待抵扣进项税额和待认证进项税额的区别
  • 固定资产为什么要提减值准备
  • 资金占用费如何计算企业所得税
  • 小规模纳税人能抵扣进项税额吗
  • 计提工资与实发工资有差额怎么计算成本
  • 在MySQL中使用STRAIGHT_JOIN的教程
  • mysql索引实战
  • 注册表隐藏桌面图标
  • 如何进行节约
  • Ubuntu14.4下Sublime Text 3无法输入中文解决方法
  • 如何使用组策略脚本
  • ubuntu20.04
  • centos查看inode
  • win7系统玩英雄联盟没有声音
  • windows7system登录
  • Centos 6.4 安装dnsmasq的方法
  • windows更新后桌面没反应
  • 如何刷硬盘使用时间
  • win10更新后有线网络无法使用
  • Python自然语言处理PDF
  • bat文件加密bat解密脚本
  • nodejsorg
  • 安卓基于谷歌
  • JavaScript+html5 canvas实现本地截图教程
  • 说几条javascript的基本规范
  • 社保批扣和灵活就业批扣有什么区别
  • 税务局监察室主任职位说明书
  • 没有代理记账资格的公司能代理记账吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设