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);}对于单向递归,可以设置一些变量保存中间结构

最近更新

2025年度安防设备展览会现场垃圾清运合同 8页

2025年度夫妻经济独立与财产分割协议 7页

2025年度城市综合体施工劳务合作协议 9页

2025年度国际人才公寓租赁居间服务合同 8页

2025年度名人代言房产代理合作协议书版 8页

有关商业合作合同新规定 7页

2025年度劳动合同解除通知及离职员工档案管理.. 7页

2025年度农村自建房屋买卖合同(含民宿经营设.. 9页

2025年度养老服务机构员工劳务派遣及护理服务.. 9页

2025年度儿童礼仪教育服务合同书 9页

2025年度体育赛事经营授权许可 9页

2025年度企业战略规划项目经理招聘协议 8页

智能家居设备维修合同模板 6页

遗传和变异部分 39页

大鼠脑干缺血再灌注模型制备—脑干缺血再灌注.. 3页

采购管理知识:采购过程中的贸易术语汇总 10页

文化广场装修合同模板3篇 49页

轴承特征信号提取 30页

文具店改造合同及预算3篇 48页

教育设备运输代理服务条款3篇 51页

教育机构石材供应运输协议3篇 48页

2-萘酚气相色谱测定方法的研究 2页

1992年我国技术进出口主要情况 2页

1987年上海涂料行业技术进展 2页

影院装修尾款验收标准3篇 52页

1,2-聚丁二烯介电松弛的复平面分析 2页

土石坝毕业设计课程设计 63页

2024年《国有企业管理人员处分条例》测试题【.. 15页

浙教版小学四年级2022-2023学年劳动与技术教学.. 37页

执业兽医资格考试基础科目(动物生物化学)模拟.. 10页