- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
第九讲递归;递归的定义;例如:
voidA()
{…
A();
…
}
函数A中的语句直接调用了函数A本身,这叫做直接递归调用。
;递归的定义;递归的根本思想;递归的要素;例1阶乘函数;求解阶乘n!的过程;;递归函数的内部执行过程;例2.Fibonacci数列求解.;非递归求解:
intf(intn)
{ intpre,now,next,j;
if(n=1)return(n);
else
{ pre=0; now=1;
for(j=2;j=n;j++)
{ next=pre+now;
pre=now;
now=next;
}
return(next);
}
};递归求解:
intf(intn)
{
if(n=1)return(n);
else
return(f(n-1)+f(n-2));
};递归程序与非递归程序的差异;递归与非递归的比较;递归的应用;回文串;可以用递归方法检测一个字符串S是否为回文串。
设S=“ShSh+1….St-1St”,
h是第一个字符的位置,t是最后一个字符的位置。
1)假设S是空串或长度为1,那么S为回文串,否那么:
2)假设Sh≠St,那么S不是回文串,否那么,递归地检测S的子串“Sh+1….St-1”.;回文串;递归的经典问题——汉诺塔问题;汉诺塔问题的递归求解:
如果n=1,那么将这一个盘子直接从塔A移到塔C上。否那么,执行以下三步:
⑴将塔A上的n-1个碟子借助塔C先移到塔B上;
⑵把塔A上剩下的一个碟子移到塔C上;
⑶将n-1个碟子从塔B借助于塔A移到塔C上。;;voidHanoi(intn,charA,charB,charC)
{??
if(n==1)Move(A,C);
????else{??????????????
Hanoi(n-1,A,C,B);
????Move(A,C);
?????????Hanoi(n-1,B,A,C);??????????????
}???????
};Hanio(3,A,B,C);⑴写出函数当前调用层执行的各语句,并用有向弧表示语句的执行次序;
⑵对函数的每个递归调用,写出对应的函数调用,从调用处画一条有向弧指向被调用函数入口,表示调用路线,从被调用函数末尾处画一条有向弧指向调用语句的下面,表示返回路线;
⑶在返回路线上标出本层调用所得的函数值。;
;在迷宫中求从入口到出口的所有路径是一
个经典的程序设计问题。
迷宫可用以下图所示的方块来表示,其中每个
元素或为通道〔以空白方块表示〕,或为
墙〔以带红色的方块表示〕。
??宫问题要求的就是:从入口到出口的一个以
空白方块构成的(无环)路径。;迷宫问题——
将迷宫表示为二维数组;求解迷宫问题的简单方法是:从入口出
发,沿某一方向进行探索,假设能走通,那么
继续向前走;否那么沿原路返回,换一方向
再进行探索,直到所有可能的通路都探索
到为止。这类方法统称回溯法。;求迷宫路径算法的根本思想是:;;回溯法〔试探法〕
——将问题的候选解按某一顺序逐一枚举和检验;
在回溯法中,放弃当前候选解,寻找下一个候选解的过程叫做回溯.;为了方便判断我们行走的下一步是否出界,我们假设迷宫的四周被墙壁包围。如以下图:;
迷宫可用二维数组maze[m][n]来表示,
数组中元素为0的表示通道,为1的表示墙。
迷宫的入口处为maze[1][1],
出口处为maze[m-2][n-2],
它们的元素值必为0。
任意时刻在迷宫中的位置可用元素的行下标和列下标(i,j)来表示。;迷宫问题;在某一点maze[i][j]时,可能的运动方向有四个。可以建立一个数组move[4]给出相对于位置(i,j)的四个方向上,i与j的增量值。
move数组的定义如下:
typedefstruct
{
intvert;
inthoriz;
}offsets;
offsetsmove[4];;Move数组的值:;算法的实现
求迷宫中一条路径的算法,可以从入口开始,对每个“当前位置”都从上方向试起,假设不能通过,那么依次试验下方向、左方向、右方向。
中选定一个可通的方向,即找到“下一个位置”后,要把当前所在的位置纳入到探索路径中,并将当前所在的位置以及所选的方向记
您可能关注的文档
- 架桥机安装、拆除专项施工方案.doc
- 七上-第九课珍视生命.ppt
- 正弦定理与余弦定理综合运用.doc
- 模数和数模相互转换说明.doc
- Adobe-Illustrator--第03讲--路径和画笔.ppt
- 水下混凝土施工方案.doc
- 某经济开发区基础设施建设项目可研.doc
- 2017中考英语(河南地区)--第二轮-语法考点聚焦复习资料第22讲-名词和冠词.ppt
- 6浓差电池原电池的设计电池电动势的应用.pptx
- 水利系水工专业施工实习周记.doc
- 2012-2021北京重点校高一(下)期中语文汇编:词类活用.pdf
- 电力市场与经济运行优化:电力市场优化算法_(28).电力市场中的市场力分析.docx
- 医院培训课件:《俯卧位通气的护理》.pptx
- 电力市场与经济运行优化:电力系统能效优化方法_(1).电力市场基础理论.docx
- 电力市场与经济运行优化:电力系统能效优化方法_(9).电力系统运行与能效优化.docx
- 电力市场与经济运行优化:电力系统能效优化方法_(15).电力市场与环境影响分析.docx
- 电力市场与经济运行优化:电力系统优化调度_(1).电力市场基础与原理.docx
- 电力市场与经济运行优化:电力系统优化调度_(14).电力市场改革政策与影响.docx
- 电力市场与经济运行优化:电力系统运行优化_(4).电力系统运行基础.docx
- 2025年航运行业分析.docx
文档评论(0)