- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
48Java中的递归练习
Java中的递归练习递归:在调用一个方法的过程中,又出现直接或者间接地调用该方法本身,称为方法的递归调用。在调用方法f的过程中,又调用f方法,这是直接调用本方法;在调用方法f的过程中,又调用了f2 方法,而在调用f2 方法中过程中,又要调用f方法,这就是间接调用。最常见的就是在一个方法体内又调用了本身(直接)或者是调用了此方法的另外一个方法(间接)。注意:递归一定要明确条件,容易栈溢出StackOverflowException。注意递归的次数,因为调用的方法都会进栈,调用多少次就会有多少个方法进入栈,如果递归次数过多,会导致栈溢出异常。如果一个方法重复调用,且每次调用时,参与运算的结果与上一次调用有关,此时就可用递归来解决问题。练习题1.求sum= n+(n-1)+(n-2 )+ …….+1package december.date1;public class Sum {public static void main(String[] args) {//下午5:58:19int sum;int num = 100;sum = fun(num);System.out.println(sum = + sum);}private static int fun(int num) {//下午5:59:26if(num == 1)return 1;return num+fun(num-1);}}num = 100; sum = 5050.练习题2.就一个数的阶乘,即求n!.privatestaticlong fun(intn) throws Exception {if(n0)thrownew Exception(需要正数);if(n == 1 || n == 0)return 1;intm = n-1;longresult = n*fun(m);returnresult;}练习题3. Hanio(汉诺)塔问题:package december.date1;/** * 汉诺塔问题分析: * 64个盘子,从大到小,从下到上排列着,大的在下,小的在上,要从A处移到C处。 * 解决思路:移动64个到c处,如果能够移动63个到B处,然后把第64个移动到c处,再把63个移动到C处。 * 存在三步:①移动63个从A处借助C移动到B处, * ② 移动第64个盘子到C处,始终都是从A处移动到C处; * ③ 移动63个从B处借助A移动到C处即可。 * * 按照递归思想,移动64个从A处到C处,那么只需要完成移动63个从一处移动到另一处,。。。。。。。。 * 从而移动3个从A处移到C处,收移动2个从A处到B处,再把第三个移动到C处,再把2个从B处移到C处, * 移动2个从A处移动到C处,首先移动一个从A处移到B处,然后移动第二个从A处到C处,最后是从B处移动到C处。 * 最终究归结到把一个从一个地方移到另外一个地方,即可。 * @author Administrator * */publicclass HanoiProblem {privatestaticintcount;//用于记录需要多少次移动次数publicstaticvoid main(String[] args) {intnum = 30;String from = one;String by = two;String to = three;solveHanoiProblem(num,from,by,to);System.out.println(count);}publicstaticvoid solveHanoiProblem(intnum, String from, String by,String to) {if(num = 0) {System.out.println(传入的数据有错误或者没有盘子);return ;}if(num == 1) {move(from,to);return;}intm = num - 1;solveHanoiProblem(m,from,to,by);//把num-1 个从A处移到B处,利用Cmove(from,to);//把最下面的一个从A处移到C处solveHanoiProblem(m,by,from,to);//再把num-1个从B处移动到C处,利用A}privatestaticvoid move(String from, String to) {count++;System.out.println(from + === +to);//简单的一次移动动作}}移动30个,就需要1073741823次移动。如果num为x,次数为count1,则如果num变为x + 1,则num就是num*2 + 1. 次数是上次的两倍再加一。练习题4. 删除一
您可能关注的文档
- 2015年东财大《经济学》随机在线作业答案.docx
- 2015年中级会计实务第16章所得税习题与答案.doc
- 2015基础实验的考查.doc
- 2015年中考成语选择题及答案.doc
- 2015年人教版九年级上第三单元重点检测试卷.doc
- 2015年三一重工所得税分析.doc
- 2015年全国水利安全生产知识网络竞赛试题20150618.docx
- 2015年八年级物理下册培优第五讲压力和压强.doc
- 2015年建筑工程类初定专业技术人员简答题答案(独家)1110.doc
- 2015年初二学业水平考试地理试题.doc
- 2019-2020学年小学三年级数学下册第6章小数的初步认识单元测试题1.pdf
- 2022-2023年注册环保工程师之注册环保工程师专业基础考前冲刺练习试题含.pdf
- 2019-2020年人教版道德与法治一年级下册第16课《大家一起来》word教案1.pdf
- 2021年中国氢能源行业相关政策汇总 .pdf
- 2021学年人教版小学三年级数学下册第五单元《面积》单元测试题(有答.pdf
- 2017传染病防治监督检查表 .pdf
- 【重点研报】202409_智能网联汽车标准法.pptx
- 【重点研报】2024小红书平台「轻生活」趋势洞察数据报告.pptx
- 【重点研报】中国韧性城市报告2024.docx
- 【重点研报】行稳致远,风物长宜放眼量2024年半年度中国银行业回顾与展望.docx
最近下载
- 河北对口单招第十类职业适应性测试(计算机)-第七章演示文稿软件应用课件ppt.pptx VIP
- 亚硫酸氢钠安全技术说明书.docx VIP
- 疾控大学习《病原微生物实验室生物安全风险识别和控制》习题答案.docx
- 四年级上册数学三位数乘两位数竖式计算题练习150道.pdf
- 医院公开招聘简章.pdf
- XX银行A分行业务人员培训效果评估.pdf VIP
- 思维导图在高中化学学习中的应用教学研究开题报告教学研究课题报告.docx
- GB 50937-2013 选煤厂管道安装工程施工与验收规范.docx
- 第四章 控制及其设计 课件-2023-2024学年高中通用技术苏教版(2019)必修《技术与设计2》.pptx VIP
- 学习贯彻党的二十届三中全会精神测试题三套(含答案).docx VIP
文档评论(0)