资源描述:
《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