- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
【引例1】赏麦粒 国际象棋发明人西萨·班·达依尔在国王问赏时说:“陛下,请您在这张棋盘的第1个小格里赏给我一粒麦子,在第2个小格里给2粒,第3个小格给4粒,以后每一小格都比前一小格加一倍。请您把这样摆满棋盘上所有64格的麦粒……” ? 需要多少粒麦子 f(1)=1; f(2)=2; f(3)=4; …… f(n)=2*f(n-1); 【引例2】汉诺塔问题 大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。 #include iostream.h void main() { void hanoi(int n,char one,char two,char three); int m; cinm; hanoi(m,A,B,C); } void hanoi(int n,char one,char two,char three) { void move(char x,char y); if(n==1) move(one,three); else { hanoi(n-1,one,three,two); move(one,three); hanoi(n-1,two,one,three); } } void move(char x,char y) { coutx--yendl; } (x,y)三角形中心点坐标 (x1,y1)、 (x2,y2)、 (x3,y3)三角形三个顶点 的坐标 (x01,y01)、 (x02,y02)、 (x03,y03)分别代表三个小三角形中心点坐标 #include graphics.h #include conio.h #include iostream.h #include math.h #define PI 3.14 void drawpic(double x,double y,double len,int k); void main() { int n; cinn; //递归深度 initgraph(600,600); //初始化屏幕大小600*600 drawpic(300,300,500,n); getch(); closegraph(); } 三角形中心点坐标 边长 递归深度 void drawpic(double x,double y,double len,int k) { double x1,y1,x2,y2,x3,y3,x01,y01,x02,y02,x03,y03; if(k==1) { x1=x-len/2; y1=y+len/2*tan(PI/6); x2=x+len/2; y2=y+len/2*tan(PI/6); x3=x; y3=y-len*tan(PI/6); line(x1,y1,x2,y2); line(x2,y2,x3,y3); line(x3,y3,x1,y1); } else { x01=x-len/4; y01=y+len*tan(PI/6)/4; x02=x+len/4; y02=y+len*tan(PI/6)/4; x03=x; y03=y-len*tan(PI/6)/2; drawpic(x01,y01,len/2,k-1); drawpic(x02,y02,len/2,k-1); drawpic(x03,y03,len/2,k-1); } } 递归出口 * * 递 归 函 数 递归概念 设计方法步骤 执行过程 递归与迭代 典型案例 f(64)=264-1=18446744073709551615 什么特点? 解决方法 要实现将64个圆盘从第一根柱子移到第三根柱子,首先要完成将最上面的63个圆盘移到第二根柱子上,然后再将最下面的一个圆盘移到第三根柱子上。这样,如何移动64个圆盘的问题就转换成了如何移动63个圆盘问题,依次类推,解决问题的规模可以逐步降低为解决移动62、61、60……3、2、1个圆盘的问题。 以上两个例子都是递归问题 一、递归的概念 1、定义 2、特点 3、典型类型 1、定义 递归方法是指通过函数或过程调用自身,将
您可能关注的文档
最近下载
- 20世纪西方文论讲义.doc VIP
- 2024年环保知识生态建设知识竞赛-人工环境工程学科奖学金(人环奖)知识竞赛考试历年(2018-2023)真题荟萃带答案.docx VIP
- 遗体接运及处理作业流程图(E001)-台南市殡葬管理所.doc VIP
- 2020-团体标准-超声引导微创手术室配置要求.pdf VIP
- 2024年环保知识生态建设知识竞赛-人工环境工程学科奖学金(人环奖)知识竞赛考试历年真题荟萃带答案.docx VIP
- 基层站队HSE标准化建设.pptx VIP
- 古代文学史-明清文学.ppt VIP
- 房屋建筑学(第6版)课件 6.墙体与基础(第6版).ppt
- 公司企业十四五发展规划.pdf VIP
- 遗体防腐整容综合服务策划方案范文4篇.pdf VIP
文档评论(0)