Java递归例子

Java递归例子

ID:40074081

大小:25.11 KB

页数:32页

时间:2019-07-19

Java递归例子_第1页
Java递归例子_第2页
Java递归例子_第3页
Java递归例子_第4页
Java递归例子_第5页
资源描述:

《Java递归例子》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实用文档Java中的经典递归//汉诺塔问题(递归)(古代有一个梵塔,塔内有三个座A、B、C,A座上有64个盘子,盘子大小不等,大的在下,小的在上(如图)。有一个和尚想把这64个盘子从A座移到B座,但每次只能允许移动一个盘子,并且在移动过程中,3个座上的盘子始终保持大盘在下,小盘在上。在移动过程中可以利用B座,要求打印移动的步骤。如果只有一个盘子,则不需要利用B座,直接将盘子从A移动到C。·如果有2个盘子,可以先将盘子1上的盘子2移动到B;将盘子1移动到c;将盘子2移动到c。这说明了:可以借助B将2个盘子从A移动到C,当然,也可以借助C将2个盘子从A移动到B。·如果有3个盘子,那么根据2个盘

2、子的结论,可以借助c将盘子1上的两个盘子从A移动到B;将盘子1从A移动到C,A变成空座;借助A座,将B上的两个盘子移动到C。这说明:可以借助一个空座,将3个盘子从一个座移动到另一个。·如果有4个盘子,那么首先借助空座C,将盘子1上的三个盘子从A移动到B;将盘子1移动到C,A变成空座;借助空座A,将B座上的三个盘子移动到C。)packageorg;importjava.util.Scanner;publicclassTower{publicstaticvoidmain(String[]args){System.out.println("输入盘子的个数:");Scannersc=newScan

3、ner(System.in);intn=sc.nextInt();tower(n,'A','B','C');}标准文案实用文档publicstaticvoidtower(intn,chara,charb,charc){if(n!=0){tower(n-1,a,c,b);System.out.println("movedisk"+n+"t"+"from"+a+"t"+"to"+c);c=a;tower(n-1,b,a,c);}}}//------------------------------------------------------------------------------

4、---------------------//斐波那契级数(递归,当n比较大时,效率比较低)packageorg;importjava.util.Scanner;publicclassFib{publicstaticlongfib(intn){if(n==1

5、

6、n==2)return1;elsereturnfib(n-1)+fib(n-2);}/*测试*/publicstaticvoidmain(String[]args){标准文案实用文档System.out.println("输入一个整数:");Scannersc=newScanner(System.in);intn=sc.nextIn

7、t();System.out.println("结果为:"+fib(n));}}//---------------------------------------------------------------------------------------------------//最大公约数(递归)packageorg;importjava.util.Scanner;publicclassMaxGcd{/*递归实现*/publicstaticintgcd(intm,intn){if(n==0)returnm;elseif(m<=n)returngcd(n,m);elsereturngc

8、d(n,m%n);}/*非递归实现*/publicstaticintgcd2(intm,intn){if(m>=n){while(n!=0){intrem=m%n;标准文案实用文档m=n;n=rem;}}elsegcd2(n,m);returnm;}/*测试*/publicstaticvoidmain(String[]args){System.out.println("请输入两个整数m和n");Scannersc=newScanner(System.in);intm=sc.nextInt();intn=sc.nextInt();System.out.println(m+"和"+n+"的最大

9、公约数为:"+gcd(m,n));}}//---------------------------------------------------------------------------------------------------//简单的0/1背包问题(递归):设一背包可容物品的最大质量为m,现有n件物品,质量为m1,m2,...,mn,mi均为正整数,要从n件物品中挑选若干件,//使背包的质量之和正好为mp

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。