java递归栗子
慎用!!!判断不慎会 Exception in thread "main" java.lang.StackOverflowError
import java.io.File; /** * 判断一旦出错就会出现堆栈溢出 慎用!!!!! * */ public class Dg { public static void main(String[] args) { String path = "."; allFiles(new File(path), 0); System.out.println(fib(9)); printFib(9); num2binary(9); System.out.println(); num2binary2(9); } private static void printFib(int i) { for (int j = i; j > 0; j--) { System.out.print(fib(j) + " "); } } /** * 遍历树结构类似于此 */ private static void allFiles(File root, int level) { if (root.isFile()) { System.out.println(root.getAbsolutePath()); return; } level++; System.out.println(root.getAbsolutePath()); File[] listFiles = root.listFiles(); for (File file : listFiles) { allFiles(file, level);// 递归 } } /** * 菲波那切数列 1 1 2 3 5 8 */ private static int fib(int n) { if (n < 1) { return 0; } if (n == 1 || n == 2) { return 1; } return fib(n - 1) + fib(n - 2); } /** * 递归实现十进制转二进制 */ private static void num2binary(int n) { if (n == 0) { System.out.print(0); return; } else if (n == 1) { System.out.print(1); return; } else { num2binary(n / 2); System.out.print(n % 2); } } private static void num2binary2(int n) { String hexString = Integer.toBinaryString(n); System.out.println(hexString); } }