递归算法Recursion 递归: 递归作为一个过程或函数在其定义或说明中又直接或调用自身的方法。用自己的简单情况去描述自己。 递归作为一种算法,一个函数调用自身来冲定,把复杂的问题转化为一个与原问题相似的规模。那么在相似的规模中就类似与用较小的问题来解题。递归的概叙能力在于用有限的语句来定义对象的无限即会。 备注 • 递归是在过程或函数里面调用自身。 • 在使用递归策略师,必须有一个明确的递归结束条件,称为递归的出口。 举例 package recursion; /** * 求5! * @author HP */ public class Recursion { public static void main(String[] args) { Recursion r = new Recursion(); int ret = r.jc(3); System.out.println(ret); } public int jc(int num){ if(num==1) return 1; //调用自身的方法 return num*jc(num-1); } } Copy文件流操作(节点流) package demo; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; public class test { public static final String subPath = "//"; public static void main(String[] args) { test t = new test(); t.copeFile("C:/CorelDRAW 12", "D:/aaa"); } private File inFile = null; private File outFile = null; private InputStream input = null; private OutputStream output = null; public void copeFile(String in, String out) { this.inFile = new File(in); this.outFile = new File(out); if(inFile.exists() && outFile.exists()) this.outFile(inFile, outFile); } private int num = 0; public void outFile(File inFile, File outFile) { num++; String inName = ""; if(num == 1) inName = inFile.getName() + test.subPath; String out = outFile.getPath(); for(File f : inFile.listFiles()) { if(f.isFile()) { try { input = new FileInputStream(f); output = new FileOutputStream(out + test.subPath + inName + f.getName()); byte[] b = new byte[(int)f.length()]; input.read(b); output.write(b); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { input.close(); output.close(); } catch (IOException e) { e.printStackTrace(); } } } else { System.out.println(out + test.subPath + inName + f.getName()); File ff = new File(out + test.subPath + inName + f.getName()); ff.mkdir(); this.outFile(f,ff); } } } } 复制文件名 package demo; import java.io.*; Import java.util.*; @SuppressWarnings("unchecked") public class a { public static void main(String[] args) throws Exception { File c=new File("c://22"); getfile(c); System.out.println("---------------------"); getDire(c); } public static void getfile(File f) { File[] files=f.listFiles(); for(File f1:files) { if(f1.isFile()) { System.out.println(f1); } if(f1.isDirectory()) { getfile(f1); } } } public static void getDire(File f) { File[] files=f.listFiles(); for(File f1:files) { if(f1.isDirectory()) { System.out.println(f1); getDire(f1); } } } } 处理流: