位置: 编程技术 - 正文

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

  • 进项税额抵扣怎么做账
  • 税务信用级别为m级
  • 企业变更股东需要本人到场吗
  • 筹建期印花税退税分录
  • 内涵报酬率和必要投资报酬率
  • 公司合并是不是先变更股权
  • 汇算清缴职工福利支出
  • 增值税纳税义务发生时间
  • 预计销售退回的钱怎么算
  • 来料加工账务处理方法
  • 促销赠品的会计处理
  • 税金及附加包括所得税费用吗
  • 印花税本月没有,忘记零申报,有影响吗了
  • 案例分析改变,从三块板开始
  • 个税所得期和所得税区别
  • 小规纳税人租金可以记入成本吗
  • win10 20h2更新后闪屏
  • 资产负债表日后事项涵盖期间
  • 退回的工伤费用怎么做账
  • win11快捷键大全
  • kprcycleaner.exe是什么
  • 企业资产负债表有何作用
  • php上传文件到指定目录
  • 蓝色龙舌兰花语
  • nginx for linux
  • 商业模式诠释了一个企业如何赚钱
  • 个体户可以不办公户吗
  • 逐帧flash动画
  • 说好的运费少给怎么办
  • 2020年企业报税的详细流程
  • 红字发票已开但红字发票信息表已核销待查证,怎么回事?
  • 个人所得税银行卡未实名认证是什么意思
  • 卖固定资产计入
  • 法律服务费属于什么服务
  • 债务重组开场白
  • 已经抵扣的发票红字信息表怎么开
  • 个税申报赡养老人可以填公婆吗
  • 快速实现愿望超灵的方法
  • 工会经费税务代收是什么意思
  • 固定资产一次性折旧政策2023
  • 进口化妆品品牌大全
  • 工程项目成本核算
  • 低值易耗品摊销表格
  • 库存商品结转成本的金额怎么计算
  • 福利费发票可以抵扣进项税吗
  • 印花税的通俗理解
  • 应补税额是要交钱
  • 发票报销抵扣税点是给谁
  • 安全生产责任险是强制险吗
  • 自产的产品作为福利增值税
  • 现金日记账的登记日期以什么日期为标准?
  • 小微企业免征增值税优惠
  • 营业执照过期多久不能审
  • 开设明细账
  • 原始凭证书写要求
  • mysqldump -s
  • winpe安装
  • linux中的用户管理主要涉及用户账号文件
  • win8系统如何关闭杀毒系统
  • 怎么开aero透明模式
  • win8电脑背景变成黑色的了是为什么
  • windows移动中心英文怎么写
  • win7系统电脑蓝牙在哪里
  • win7怎么修改开始菜单样式
  • win10虚拟机不能使用
  • linux设置界面
  • unity总结
  • Javascript之String对象详解
  • javascript的面向对象
  • python 入门指南
  • nodejs indexof
  • node.js gui
  • jquery选择id
  • python repr
  • js selectionchange
  • js 状态模式
  • js实现带搜索功能的下拉菜单
  • 小企业会计准则的印花税计入什么
  • 广东省国家税务局电子发票系统,网络设置
  • 机动驳船是什么
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设