- 0
- 0
- 约1.06万字
- 约 52页
- 2026-01-30 发布于广东
- 举报
7.1递归
递归(recursion)是计算科学领域的一种重要的思维模式,是一种问题求解的方法。例如,数学公式n!=1×2×···×n的计算可以取n-1次乘法的结果,也可以采用另一种思维方法———n!=n(n-1)!。也就是说,给定n,则n!可由(n-1)!求出,(n-1)!可由(n-2)!求出,···,2!可由1!求出。而1!=1已知,那么2!可求得,从而3!可求得,依次类推,n!可求得。这种思维方式便是一种递归。递归思维将复杂的计算简化为简单计算的不断重复,是最重要的计算思维。在C/C++语言中,递归的实现是采用函数的自我调用来实现。函数直接(或间接)调用自己就称为函数的递归调用,这种函数就称为递归函数。递归函数将反复调用其自身,每调用一次就进入新的一层,当最内层的函数执行完毕后,就一层一层地由里到外返回。调用自身的过程又称为“递推”,由里到外返回的过程又称为“回归”,所以递归过程可以分为“递推”和“回归”两个阶段。下一页返回
7.1递归
本节以一个简单示例为基点,阐述应用递归的程序设计过程。【例7-1】用递归函数编写计算阶乘n!的函数factorial。【分析】阶乘n!的计算公式如下:根据上面阶乘的计算公式可以发现,阶乘的计算公式是一个递归计算公式。为了计算n!,需要调用计算阶乘的函数factorial(n),它因要计算(n-1)!,而调用factorial(n-1),于是形成递归调用。这个过程一直持续到1!为止。在求得1!=1以后,逐层返回,最后求得n!。上一页下一页返回
7.1递归
算法的伪代码如下:(1)输入一个自然数,存入变量n;(2)递归调用函数factorial;(3)输出n!的值;上一页下一页返回
7.1递归
7.1.1递归的思想递归是程序设计中的一种常见方法。采用递归方法编写程序可以使程序更加简洁、清晰、容易理解。阶乘问题是一个经典的数学递归问题。为了得到n!,操作步骤如下(注意参数的变化):(1)第1次调用函数factorial(n)。根据公式可知:n!=n×(n-1)!。所以,需要知道(n-1)!的数值,那么就需要第2次调用函数factorial。(2)第2次调用函数factorial(n-1)。根据公式可知:(n-1)!=(n-1)×(n-2)!。所以,需要知道(n-2)!的数值,那么就需要第3次调用函数factorial。(3)第3次调用函数factorial(n-2)。根据公式可知:(n-2)!=(n-2)×(n-3)!。所以,需要知道(n-3)!的数值,那么就需要第4次调用函数factorial。上一页下一页返回
7.1递归
直到调用函数factorial(2),都可采用同样的方法进行处理,2!=2×1!。根据公式可知:1!=1。因此,问题最终可以求解。可以看出,每次面对的问题在本质上是同一个问题,只是问题的规模不同。上面的解决方法体现了递归的思想,将复杂问题分解为规模较小的子问题,且子问题和原问题本质上是相同的问题。在将子问题求解后,原问题也将求解。接下来,以求解5!为例,说明递归的递推过程和回归过程。上一页下一页返回
7.1递归
7.1.2递归的递推求解5!的递推过程如下:(1)求解5!,即调用factorial(5)。当进入factorial()函数体后,由于形参n的值为5,不等于1,所以执行factorial(n-1)?n,即执行factorial(4)?5。为了求得这个表达式的结果,必须先调用factorial(4),并暂停其他操作。换言之,在得到factorial(4)的结果之前,不能进行其他操作。(2)调用factorial(4)时,实参为4,形参n也为4,不等于1,因此将继续执行factorial(n-1)?n,即执行factorial(3)?4。为了求得这个表达式的结果,必须先调用f
您可能关注的文档
- 《汽车文化1》_6-1-欧美著名汽车公司及品牌介绍.ppt
- 《工业控制网络》_数据通信基础.ppt
- 《汽车材料》_项目三 汽车机械传动装置.ppt
- 《汽车材料》_项目二 汽车常见机构.ppt
- 《汽车文化1》_3-2汽车造型与色彩.ppt
- 《PLC控制系统》_项目一.pptx
- 《汽车机械工程基础》_学习领域5—汽车轴系零部件2.ppt
- 《汽车文化1》_5-2-世界顶级跑车.ppt
- 《汽车文化1》_6-2-亚洲主要汽车公司及品牌.ppt
- 《汽车文化1》_4-1-新能源汽车.ppt
- (正式版)DB33∕T 2574-2023 《 数字乡村建设规范 》.pdf
- (正式版)DB33∕T 2554-2022 《“GM2D”进口商品数据元 》.pdf
- (正式版)DB33∕T 2573-2023 《 助残护理员照护服务规范 》.pdf
- (正式版)DB33∕T 2542-2022 《餐饮计量规范 》.pdf
- (正式版)DB33∕T 2558.1-2022 《林下套种菌药生产技术规程 第1部分:大球盖菇》.pdf
- (正式版)DB33∕T 2558.3-2022 《林下套种菌药生产技术规程 第3部分:羊肚菌 》.pdf
- (正式版)DB33∕T 2575-2023 《 野生猛禽和涉禽安全救护技术规程 》.pdf
- (正式版)DB33∕T 2544-2022 《森林人家建设规范》.pdf
- (正式版)DB33∕T 310010-2021 《沿海防护林生态效益监测与评估技术规程》.pdf
- (正式版)DB33∕T 3004.1-2015 《农村厕所建设和服务规范 第1部分:农村改厕管理规范 》.pdf
原创力文档

文档评论(0)