- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
JAVA递归
适宜于用递归算法求解的问题的充分必要条件是: (1)问题具有某种可借用的类同自身的子问题描述的性质; (2)某一有限步的子问题(也称作本原问题)有直接的解存在。 当一个问题存在上述两个基本要素时,该问题的递归算法的设计方法是: (1)把对原问题的求解设计成包含有对子问题求解的形式。 (2)设计递归出口。 优点:递归算法结构清晰,可读性强,而且容易用数学归纳法来证明算法的正确性,因此它为设计算法、调试程序带来很大的方便。 缺点:递归算法的运行效率较低,无论是耗费的计算时间还是占用的存储空间都比飞递归运算要多。 总结 7 返回目录 计科121404219 汤鑫 计科121404101 白钢 2014/09/18 引言 数列求和 背包问题 纵向显示整数 字符串排列 最大公约数 总结 引言 递归是一种方法(函数)调用自己的编程技术,它在定义自身的同时又出现了对自身的引用,有点类似于我们高中学的的数学归纳法。用递归的目的在于解决一种常见问题,即子任务不过是开始试图解决的相同问题的一个较简单版本。 在此幻灯片中,将研究许多列子,以此来说明递归可以应用在多种情况下,同时还会讨论递归方法的优势和劣势。 返回目录 ※许多数学函数都是使用递归来定义的。我们首先从简单的例子研究起: 例:编写一个递归的方法来计算下面的级数; m(i)=1/3+2/5+3/7+4/9+5/11+6/13+…i/(2i+1). 2 对数列求和 由题可知a(i)=i/(2i+1),要求a(i)就需要知道a(i-1),由此可推,只要知道a(1)就可以求a(i)。这里用递归方法就可以很简单的求解。 2 对数列求和 1/3 11/15 122/105 506/315 7141/315 113623/45045 …… m(i) 1/3 1/3+2/5 11/15+3/7 122/105+4/9 506/315+5/11 7141/3465+6/13 …… m(i-1)+i/(2i+1) 1 2 3 4 5 6 … i m(i) 计算 i 由表可知递归方程: 1/3,i=1; m(i)= m(i-1)+i/(2*i+1). 所以,计算sequence_m(i)的算法可以简单如下: if(i==1) return 1/3; else return sequence_m(i-1)+i/(2*i+1); 2 对数列求和 边界 条件 递归方程 “边界条件”是递归的必要条件之一(它是递归运算的出口):另一个条件是递归体,前者确定递归到何时结束,后者确定递归求解时的递推关系。 现在大家应该对递归方法有了初步的了解 , 可以开始用递归解决简单问题了。 递归 例:编写一个递归的方法,将一个整型十进制数转换为一个二进制数。 十进制转二进制 public?static?void?toBinary(int?num){?? ????????if(num/2==0){//此时已经计算到了结束?? ???????????? System.out.print(num%2);?? ????????}?? ????????else{?? ???????????? toBinary(num/2);//向下继续计算?? ???????????? System.out.print(num%2);?? ????????}?? ????}?? 分析:平常我们将十进制数n转化成二进制数时,是将n不断除2,然后所得的余数,从下往上读取 。 例如97:97/2=48……1 48/2=24……0 24/2=12……0 12/2= 6 ……0 6/2= 3 ……0 3/2= 1 …… 1 当最后n=0时即可结束递归 1/2= 0 …… 1 返回目录
文档评论(0)