位置: 编程技术 - 正文

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环境(阿里云服务器使用教程)

  • 五万元劳务费税率
  • 营业外收入影响所有者权益吗
  • 变更税务法人需要怎么办
  • 客户维护费计入什么科目
  • 足浴按摩开票明细一栏写什么
  • 增值税报表填写说明
  • 利润表的利息费用怎么算出来的
  • 房地产开发企业资质等级有几个
  • 全国统一吗?
  • 共同控制合营企业的合营者
  • 现金短缺溢余求借多少短期借款?
  • 政府奖励金怎么用
  • 收到子公司非货币资产分配账务处理
  • 年金计算个税需要扣除吗
  • 不是本公司员工
  • 增值税申报未达标怎么办
  • 加油费开的专用发票可以用来抵扣企业所得税吗
  • 开票的时候确认收入吗
  • 房地产企业所得税核定征收率
  • 分期付款的车怎么做分录
  • 环评费属于固定资产吗
  • 一次性收取一年服务费怎么确定收入
  • 出口企业预申报没有增值税专用发票稽核信息如何处理?
  • 库存的物资
  • 房地产预收账款是什么
  • 投资入股的无形资产要摊销吗
  • 治理层和管理层包括哪些
  • 公司给员工的油费补贴以什么为依据入账
  • 发票认证了,但是没有入账
  • bassmod.dll
  • 公司一直没有收入怎么办
  • php readfile
  • 纳税人辅导期申报流程
  • 无形资产使用寿命的复核
  • laravel app接口
  • 深入理解llvm
  • 增值税发票认证在哪里
  • 二次封装机
  • redis zset源码
  • 物业公司代收水费账务处理
  • 应付票据应付利息
  • 火车头造型
  • 给客户的现金奖励会计处理
  • 微信支付算库存商品吗
  • 变卖固定资产的账务处理
  • 法人一直把公户账户转账
  • 小规模纳税人附加税费
  • 工程的直接成本包括哪些内容
  • 汇算清缴要退税1750元,不想退要调平怎么调?
  • 工程项目需要交5000万保证金合理吗
  • 一般纳税人条件要求2020
  • 材料成本差异怎么做分录
  • 私人出租房子发圈文案
  • 原材料的采购成本怎么计算
  • 出差补助没票怎么做账
  • 行政事业单位固定资产计提折旧
  • 报关单位分为几种类型?其业务范围有何不同?
  • win8下载软件
  • 电脑死机是啥原因
  • win102020h2怎么样
  • win10 升级系统
  • cocos2dx适配
  • ExtJS4如何给同一个formpanel不同的url
  • andengine学习,《android游戏开发实践指南》详解
  • 使用shell脚本实现自动化软件部署
  • cocos2dx开发的游戏有哪些
  • 骨骼动画原理
  • 纹理烫男
  • linuxtop命令详解
  • Android-Universal-Image-Loader最新框架解析
  • javascript bug
  • 辽宁省农村合作医疗2024怎么缴费
  • 企业购置房屋需要交哪些税费
  • 定额发票怎么查看有效期
  • 北京东城区社保电话
  • 成都暖气费补贴
  • 江苏 税务局
  • 汽车车船税怎么交
  • 公司完税证明去哪里开具
  • 小微企业怎么报增值税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设