递归方式计算阶乘
package com.fairy.io; public class Recursion { // 循环方式计算阶乘,又叫做迭代方式 public int compute(int number) { int result = 1; for (int i = number; i > 0; i--) { result *= i; } return result; } // 使用递归方式计算阶乘 public int compute2(int number) { if (1 == number) { return 1; } else { return number * compute2(number - 1); } } public static void main(String[] args) { Recursion test = new Recursion(); System.out.println(test.compute(5)); System.out.println(test.compute2(5)); } }
递归方式计算斐波那契数列
package com.fairy.io; public class Fibonacci { // 使用递归计算斐波那契数列 public int compute(int n) { if (1 == n || 2 == n) { return 1; } else { return compute(n - 1) + compute(n - 2); } } public static void main(String[] args) { Fibonacci fibonacci = new Fibonacci(); System.out.println(fibonacci.compute(1)); System.out.println(fibonacci.compute(2)); System.out.println(fibonacci.compute(3)); System.out.println(fibonacci.compute(4)); System.out.println(fibonacci.compute(5)); System.out.println(fibonacci.compute(6)); } }
删除一个文件目录下的所有文件,采用递归实现
package com.fairy.io; import java.io.File; public class FileTest7 { public static void deleteAll(File file) { if (file.isFile() || file.list().length == 0) { file.delete(); } else { File[] files = file.listFiles(); for (File f : files) { deleteAll(f); f.delete(); } } } public static void main(String[] args) { deleteAll(new File("C:/abc")); } }
罗列出一个文件目录下的所有文件,采用递归实现。
Version1:
package com.fairy.io; import java.io.File; import java.util.ArrayList; import java.util.List; public class FileTest8 { // 用于判断目录或文件所处的层次 private static int time; public static void deepList(File file) { if (file.isFile() || 0 == file.listFiles().length) { return; } else { File[] files = file.listFiles(); files = sort(files); for (File f : files) { StringBuilder output = new StringBuilder(); if (f.isFile()) { output.append(getTabs(time)); output.append(f.getName()); } else { output.append(getTabs(time)); output.append(f.getName()); output.append("\\"); } System.out.println(output); if (f.isDirectory()) { time++; deepList(f); time--; } } } } // 整理文件数组,使得目录排在文件之前 private static File[] sort(File[] files) { List<File> sorted = new ArrayList<File>(); for (File f : files) { if (f.isDirectory()) { sorted.add(f); } } for (File f : files) { if (f.isFile()) { sorted.add(f); } } return sorted.toArray(new File[files.length]); } // 判断需要加多少tab的方法 private static String getTabs(int time) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < time; i++) { sb.append("\t"); } return sb.toString(); } public static void main(String[] args) { File file = new File("D:/Util"); deepList(file); } }
Version2:
import java.io.File; public class ListFileDemo { public static void main(String[] args) { File file = new File("C:/Documents and Settings/root/桌面"); list(file); } public static void list(File file) { if (file.isDirectory()) { File[] files = file.listFiles(); if (files != null) { for (File f : files) { list(f); } } } System.out.println(file); } }