JAVA-I/O流-递归查找当前目录下的所有文件和文件夹
JAVA-I/O流-递归查找当前目录下的所有文件和文件夹
在一个方法的内部调用这个方法叫做递归。递归分为直接递归和间接递归,前面说的就是直接递归,而间接递归可以A方法调用B方法,B方法调用C方法,C方法调用A方法。
递归中最重要的是递归的出口,如果一个递归没有出口就会发生阻塞导致栈内存溢出,而且递归的效率并不高,应当避免递归次数过多。
- 基准情形(base case):必须总要有某些基准的情形,他们不用递归就能求解。
- 不断推进(making progress):对于那些要递归求解的情形,递归调用必须能够朝着一个基准情形推进。
假设有一个printDigit()方法只可以每次输出一个个位数整数,现在如何输出整数74263
// 单个输出
// 打印输出整数 74263
public static void printDigit(int num){
System.out.print(num);
}
public static void printOut(int num){
if (num >= 10) {
printOut(num / 10);
}
printDigit(num % 10);
}
斐波那契数列
对于{1,1,2,3,5,8···(n-2)+(n-3),(n-1)+(n-2)}这样的数列,我们叫斐波那契数列
public static int getFibonacciSequence(int num){
if (num == 1 | num == 2) {
return 1;
}
return getFibonacciSequence(num-1) + getFibonacciSequence(num - 2);
}
递归寻找所有的文件目录
public static void getAllFile(File file) {
File[] fileList = file.listFiles();
for (File f : fileList) {
if (f.isDirectory()) {
getAllFile(f);
}
else {
System.out.println(f.getName());
}
}
}

浙公网安备 33010602011771号