资源描述:
《递归在java语言中的应用》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、递归在java语言中的应用 两个小经验 1.在定义一个类时,不要随意定义成员变量.除非它是这个类的一个属性或者在类的多个方法中要用到 它. 2. publicclassTest { publicstaticvoidmain(String[]args) { byte[]b=newbyte[102400*1024]; } } 这是一个简单的程序,在写上传文件的程序时极有可能遇到这个情况.比喻说有一个文件的长度是100M. 在读取文件内容时就会这样写byte[]b=new
2、 byte[102400*1024],但是在运行时会出一个内存越界 错误.在实际应用中一定要非常小心. 二.递归: 先看一个小例子: publicclassRecursion { publicstaticvoidfunc() { func(); } publicstaticvoidmain(String[]args) { func(); } } 上面就是一个简单的递归程序,运行一定会把内存吃光,所以在使用递归时一定要加上特定的条件 下
3、面再看几个递归的例子. (1). publicclassYueShuTest { //求最大公约数 publicstaticvoidyueshu(intnum1,intnum2) { if(num1==num2) { System.out.println(num1); } else { yueshu(Math.abs(num1-num2),Math.min(num1,num2)); } } //求二进制 publicstat
4、icvoidbinary(intnum) { if(num>0) { binary(num/2); System.out.print(num%2); } } } 下面在看一个最经典的汉诺塔问题(很复杂的一个问题). publicclassHanon { staticvoidhanon(intn,chara,charb,charc) { if(n==1) { move(1,a,c); return; }
5、 hanon(n-1,a,c,b); move(n,a,c); hanon(n-1,b,a,c); } staticvoidmove(intn,chara,charc) { System.out.println(n+":"+a+"-->"+c); } publicstaticvoidmain(String[]args) { hanon(3,'A','B','C'); } } 看看,一个多么复杂的问题这么几行代码就搞定了.递归的威力无穷啊!
6、 再来看一个更复杂的. importjava.io.*; classFileWrapperextendsFile { privatebooleanbLast=false; privateFileWrapperparent=null; publicFileWrapper(Filef,booleanbLast,FileWrapperparent) { super(f.getPath()); this.parent=parent; this.bLast=bLast;
7、} publicFileWrappergetMyParent() { returnparent; } publicbooleanisLast() { returnbLast; } } publicclassFileTree { //第一种方法. /*publicstaticStringmakeSpaces(intlevel) { StringBuffersbf=newStringBuffer(); for(inti=0;i
8、