1 / 3
文档名称:

递归算法和非递归算法的区别和转换.doc

格式:doc   大小:43KB   页数:3页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

递归算法和非递归算法的区别和转换.doc

上传人:762357237 2019/2/25 文件大小:43 KB

下载得到文件列表

递归算法和非递归算法的区别和转换.doc

文档介绍

文档介绍:递归算法和非递归算法的difference和转换递归算法实际上是一种分而治之的方法,它把复杂问题分解为简单问题来求解。对于某些复杂问题(例如hanio塔问题),递归算法是一种自然且合乎逻辑的解决问题的方式,但是递归算法的执行效率通常比较差。因此,在求解某些问题时,常采用递归算法来分析问题,用非递归算法来求解问题;另外,有些程序设计语言不支持递归,这就需要把递归算法转换为非递归算法。将递归算法转换为非递归算法有两种方法,一种是直接求值,不需要回溯;另一种是不能直接求值,需要回溯。前者使用一些变量保存中间结果,称为直接转换法;后者使用栈保存中间结果,称为间接转换法,下面分别讨论这两种方法。,将递归结构用循环结构来替代。尾递归是指在递归算法中,递归调用语句只有一个,而且是处在算法的最后。例如求阶乘的递归算法:longfact(intn){ if(n==0)return1; elsereturnn*fact(n-1);}当递归调用返回时,是返回到上一层递归调用的下一条语句,而这个返回位置正好是算法的结束处,所以,不必利用栈来保存返回信息。对于尾递归形式的递归算法,可以利用循环结构来替代。例如求阶乘的递归算法可以写成如下循环结构的非递归算法:longfact(intn){ ints=0; for(inti=1;i s=s*i;//用s保存中间结果 returns;}单向递归是指递归算法中虽然有多处递归调用语句,但各递归调用语句的参数之间没有关系,并且这些递归调用语句都处在递归算法的最后。显然,尾递归是单向递归的特例。例如求斐波那契数列的递归算法如下:intf(intn){ if(n==1||n==0)return1; elsereturnf(n-1)+f(n-2);}对于单向递归,可以设置一些变量保存中间结构

最近更新

关于聚氨脂软质泡沫产品销售的几点思考 2页

关于砖薄壳设计中若干问题的探讨 2页

2025年肺部炎症影像学诊断技术研究 76页

2025年肠道阻塞精准诊断策略 16页

关于推进电力计量标准化建设的几点思考 2页

关于我国推行股份经济的几点思考 2页

2025年特种线缆材料项目发展计划 63页

关于建立我区农村社会化服务体系的研究报告 2页

2025年糖尿病周围神经病变的早期筛查与综合治.. 44页

关于培育和发展我国产权市场的研究 2页

2025年癌症综合管理与家庭医生策略 44页

2025年电力系统智能监控与故障诊断技术研究指.. 139页

2025年PTH激素分泌调控机制研究 11页

《新生儿换血疗法》 28页

2025年上海白内障与青光眼同步手术指南 23页

关于C语言可视化人机界面实现方法研究 2页

六角形翅片—柴油机冷却技术的一项新发明 2页

2025年幼儿防疫指南红红幼儿园开学首课防冠秘.. 23页

2025年城市供水系统过滤与杀菌技术研究 97页

光纤行波放大器互作用数值分析 2页

光双折射象研究四方晶系SBN晶体中的缺陷 2页

2025年中药炮制技艺实操教学解析 25页

元旦晚会主持词开场白范例(28篇) 28页

关于员工家属慰问信范文(30篇) 42页

关于要账委托书(16篇) 3页

品德与生活教学工作计划合集(31篇) 111页

婚礼女方领导致辞稿(18篇) 18页

2025年慢性肾衰竭患者运动康复指南 14页

二零二五年度企业文化融入劳动合同 8页

2025年四川省拟任县处级领导干部模拟试题第1套.. 38页