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年度环保材料广告宣传合作协议 9页

2025年度环保工程占地协议书合同 8页

2025年度环保企业绿色信贷个人借款合同 8页

2025年七线数据总线故障诊断接口解析 32页

2025年度特色养老院入住合同协议 9页

2025年度物流配送合同账期优化模板 8页

2025年度物流企业会计代理记账及供应链财务管.. 8页

2025年度滑雪场前期物业服务合同 8页

2025年度消防系统安全疏散演练场地施工清包工.. 9页

2025年ICU医院感染预防控制 54页

2025年 Gestalt 心理学原理与应用解析 27页

2025年度汽车贷款租赁及二手车评估服务合同 8页

2025年度汽车后市场厂家合作销售合同 9页

2025年COPD最新诊疗技术研究进展 72页

2025年度民宿室内设计合同模板 8页

2025年度校园环境维护保洁员聘用合同 7页

2025年ACS治疗及冠心病二级预防策略 48页

2025年度智能穿戴设备行业员工劳动合同范本 8页

2025年度智能机器人研发成果转让协议 9页

主题作文简介王建辉进修学校课程 41页

2023年青海省公务员省考《行测》真题(含答案.. 50页

2025年度智能家居内墙乳胶漆智能涂装服务合同.. 9页

2025年度智能化企业员工年劳动合同模板 7页

2025年度智能养殖羊销售管理服务合同 8页

2025年度智慧社区建设与运营服务合同 9页

2025年度智慧城市公共服务平台委托运营管理合.. 9页

2025年度时尚配饰制衣厂加工定制合同 9页

2025年度旅游行业劳动返聘导游服务合同 8页

2025年度旅游度假区土地租赁管理规范 8页

2025年度新能源电池买卖合同 9页