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);
}
}
浙公网安备 33010602011771号