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页

低渗透油藏超前注水理论及其应用 2页

低压网络短路电流计算及应用问题思考 2页

传统活性污泥法新增脱氮除磷功能的成功改造实.. 2页

优化资源配置是货币政策目标之一 2页

优势·劣势·突破口——商业部门发展外向型经.. 2页

企业视角看技术标准实施作用的实证初探 2页

企业搞不活的原因分析及根治建议 2页

灵活用工劳动合同示例 6页

滩涂开发承包合同 6页

以有限尺寸的感温元件测取瞬态温度的方法 2页

渔业合作发展承包合同书 5页

从蛋白质效价决定大豆制品的最佳工艺条件 2页

深圳房屋租赁规范合同 6页

从模拟实验结果讨论石油地球化学中几个重要问.. 2页

从市场角度探索解决新能源发展中的问题 2页

从卫星影像上分析海南岛第四纪玄武岩的分期 2页

从《资本论》中探索提高社会主义经济效益的途.. 2页

消防安全工程劳务分包合同模板集 6页

人造大理石树脂中试通过技术鉴定 2页

人民币汇率变动对我国就业影响的滞后效应分析.. 2页

人小细胞肺癌放射免疫治疗的实验研究 2页

济南市二手房买卖居间合同模板 6页

活动宣传推广合同范本 6页

交联法在分子生物学研究中的应用 2页

沿街商铺租赁合同典范 6页

井楼油田浅丛式试验井组的钻井工艺技术 2页

汽车零部件年度供应合同 6页

汽车购销合同协议 6页