2022年递归在java语言中的应用 .pdf
《2022年递归在java语言中的应用 .pdf》由会员分享,可在线阅读,更多相关《2022年递归在java语言中的应用 .pdf(13页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、递归在 java 语言中的应用两个小经验 1.在定义一个类时,不要随意定义成员变量.除非它是这个类的一个属性或者在类的多个方法中要用到它 . 2. public class Test public static void main(String args) byte b = new byte102400*1024; 这是一个简单的程序,在写上传文件的程序时极有可能遇到这个情况.比喻说有一个文件的长度是 100M. 在读取文件内容时就会这样写byte b = new byte102400*1024, 但是在运行时会出一个内存越界错误 .在实际应用中一定要非常小心. 二 . 递归 :先看一个小例子
2、: public class Recursion public static void func() func(); public static void main(String args) func(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 13 页 - - - - - - - - - 上面就是一个简单的递归程序,运行一定会把内存吃光,所以在使用递归时一定要加上特定的条件下面再看几个递归的例子. (1) . public class YueShuTest /
3、求最大公约数 public static void yueshu(int num1,int num2) if(num1 = num2) System.out.println (num1); else yueshu(Math.abs(num1 - num2),Math.min(num1,num2); /求二进制 public static void binary(int num) if(num 0) binary(num / 2); System.out.print (num % 2); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - -
4、 - 名师精心整理 - - - - - - - 第 2 页,共 13 页 - - - - - - - - - 下面在看一个最经典的汉诺塔问题(很复杂的一个问题). public class Hanon static void hanon(int n,char a,char b,char c) if(n = 1) move(1,a,c); return; hanon(n - 1,a,c,b); move(n,a,c); hanon(n - 1,b,a,c); static void move(int n,char a,char c) System.out.println (n + : + a +
5、 - + c); public static void main(String args) hanon(3,A,B,C); 看看 ,一个多么复杂的问题这么几行代码就搞定了.递归的威力无穷啊! 再来看一个更复杂的. import java.io.*; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 13 页 - - - - - - - - - class FileWrapper extends File private boolean bLast = false; priv
6、ate FileWrapper parent = null; public FileWrapper(File f,boolean bLast,FileWrapper parent) super(f.getPath(); this.parent = parent; this.bLast = bLast; public FileWrapper getMyParent() return parent; public boolean isLast() return bLast; public class FileTree /第一种方法 . /*public static String makeSpac
7、es(int level) StringBuffer sbf = new StringBuffer(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 13 页 - - - - - - - - - for (int i = 0; i level; i+) sbf.append( ); return sbf.toString(); public static void listFile(File f,int level) if(!f.exists() System.out
8、.println ( 该文件不存在 !); return; System.out.println (makeSpaces(level) + f.getName(); if(f.isDirectory() File fs = f.listFiles(); for(File file : fs) listFile(file,(level + 1); public static void main(String args) File file; if(args.length 1) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精
9、心整理 - - - - - - - 第 5 页,共 13 页 - - - - - - - - - file = new File(.); else file = new File(args0); listFile(file,0); */ 这段代码打印出来的结果如下: /第二种方法public static void listFile(FileWrapper fw) if(!fw.exists() System.out.println ( 该文件不存在!); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - -
10、 - - - - 第 6 页,共 13 页 - - - - - - - - - return; System.out.println (makePrefix(fw) + fw.getName(); if(fw.isDirectory() File fs = fw.listFiles(); for (int i = 0 ;i fs.length;i+)/File fl : fs) File f1 = fsi; FileWrapper fw1 = null; if(i = fs.length - 1) fw1 = new FileWrapper(f1,false,fw); else fw1 = n
11、ew FileWrapper(f1,true,fw); listFile(fw1); public static void main(String args) File file; if(args.length 1) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 13 页 - - - - - - - - - file = new File(.); else file = new File(args0); FileWrapper fw = new FileWrapper(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年递归在java语言中的应用 2022 递归 java 语言 中的 应用
限制150内