- 1、本文档共2页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
递归算法在C_C程序设计中的描述与实现,递归算法实现树形菜单,递归算法实现格雷码,递归算法,递归算法经典实例,汉诺塔递归算法,java递归算法,c递归算法,java递归算法例子,全排列递归算法
科技信息 计算机与网络
递归算法在C/C++程序设计巾昀描述与实坝
广州大学华软软件学院软件工程系 刘志伟
[摘要]递归是函数实现的一个很重要的环节,对许多复杂的问题,递归能提供简单、自然的解法。本文在对递归的概念进行介绍
的基础上,重点讨论了递归的程序设计方法,并分析了递归函数的调用和回溯过程。
[关键词]递归 函数调用 C/C++
1.引言 的问题分解成规模较小的、易解决的同一问题。规模较小的问题又用同
递归是计算机科学中一种强有力的问题求解方法,用递归算法编 样的方法分解成规模更小的问题,并且小到一定程度可以直接得出它
写的程序结构清晰,具有很好的可读性,正确性容易验证。但由于递归 的解,从而得到原来问题的解。特别地,当规模N=I时,能直接得解。
的设计思想比较巧妙,特别是对于规模较大的问题,掌握递归算法的设 当一个问题存在上述构成递归的特征时,我们就可以考虑利用递
计分析和实现过程并非易事,因此,有必要对其进行深入探讨,分析其 归进行处理。由此我们分析适宜用递归求解问题的充要条件是:其一,
概念及设计方法和实现过程,以此加深对递归算法思想的进一步理解, 问题具有某种可借用的类同自身的子问题描述的性质;其二,某一有限
学会正确应用递归解决实际问题的方法。 步的子问题有直接的解存在。
2.递归的概念 当一个问题存在上述两个基本要素时,设计该问题递归算法的方
如果一个对象部分地由自己组成或者是根据自己定义的,则称这 法是:
个对象是递归的;在程序设计中,若一个过程直接地或间接地调用自身, (1)设计递归公式。即将一个问题化解为一个或多个子问题求解,
则称这个过程是递归的过程。在c,C++程序中,因为每次调用函数时, 且子问题和原问题具有相同的解法。例如,前面【例1】的n!可化解为n*
C/C++语言都会为参数和局部变量分配新的存储区空间,因此函数调 (n一1)!,其中,子问题(n一1)!和n!的解法相同。
用它自身是可能的。这种类型的函数称为递归(recursive)函数。当函数(2)设计递归出口。即递归终止条件(边界条件)。递归最后一级的
调用它自身时,这个过程称为直接递归(directrecursion)。同样,函数能调用必须不能再进行递归,递归函数必须返回。不能无穷递归。
够调用第二个函数,反过来第二个函数也可以调用第一个函数。这种类 在通常情况下,递归调用都是要受到条件控制的,而且在被调用的
型的递归称为间接(indirect)递归。’ 过程中,会对调用条件进行有规律的修改,即每递归一次要使递归趋于
通常如下两种情况会用到递归: 结束,直到满足边界条件,返回边界值,结束递归;然后按照原来的路径
(1)问题的定义是递归的。 逐层返回,求出原问题的解。由此可知,递归算法设计的关键在于递归
许多数学上常用的概念是递归定义的。如阶乘函数的常见定义: 描述(递归公式)和递归终止条件。
1, 当n=0时 一般地,用递归方法进行“问题求解”时,具体需要依次进行下列三
nf_f
“一In+fn一111。 当n≥1时 个步骤。
这种定义方法是用阶乘函数自身定义了阶乘函数。由于n!和(n一1)! (1)化解问题,求得算法
都是同一个问题的求解,因此可将n!用递归函数来描述。程序代码如 当问题化解成子问题后,有的可以写出一个迭代公式。如阶乘n!,
下: 可写迭代公式f(n)=n+“一1)。
【例1】用递归函数编程求n的阶乘n!。
您可能关注的文档
- 进化发展心理学解析.pdf
- 进化心理学_当代西方心理学发展的一种新取向.pdf
- 进化认识论对保罗_莱文森媒介理论的影响_贡少辉.pdf
- 进口葡萄酒检验检疫中存在的问题及对策.pdf
- 进步主义与要素主义教育理论之比较_兼论其对我国教育改革的启示.pdf
- 进化心理学_心理科学的未来发展_英文_.pdf
- 进程交互仿真机制的多线程实现及其应用.pdf
- 进行性失语的临床和病理学特征.pdf
- 进行初级分类废铝杂料的预处理.pdf
- 进货技巧:和批发商打交道的注意事项.pdf
- 中国水稻研究所水稻种质资源中期库建设项目报告表.pdf
- 全自动X射线轮胎检测系统建设项目报告表.pdf
- 桐庐县前溪流域治理工程报告表.pdf
- 年产34万吨瓶装纯净水高速生产线升级项目报告表.pdf
- G2531杭州至上饶高速公路(杭淳开高速公路)杭州中环至浙赣界(杭州段)报告书.pdf
- 2025年云南省中考历史真题含答案.docx
- 广东省大湾区2024-2025学年高一下学期7月期末考试政治试题含答案.pdf
- 陕西省汉中市2024-2025学年高二下学期期末质量检测含答案(9科试卷).pdf
- 福建省南平市2024-2025学年第二学期高二下期末质量检测试卷含答案(9科试卷).pdf
- 河北省石家庄2024-2025学年高二下学期期末教学质量检测含答案(9科试卷).pdf
文档评论(0)