概述
在数学上,关于递归函数的定义如下:对于某一函数f(x),其定义域是集合A,那么若对于A集合中的某一个值X0,其函数值f(x0)由f(f(x0))决定,那么就称f(x)为递归函数。简单来讲就是在当前函数表达式内再使用本身的表达式。
在编程语言中,指在当前方法内直接或间接调用自己的这种现象。如:
public static void a(){
a();
}
递归求和
请使用递归计算从1–100的所有数的累加和。
public class Test22 {
public static void main(String[] args) {
System.out.println("1-100累加和:"+leijia(100));
}
private static int leijia(int n) {
if (n == 1) {
return 1;
}
return n+leijia(n-1);
}
}
注意:递归一定要有条件限定,保证递归能够停止下来,次数不要太多,否则会发生栈内存溢出。
目录的遍历
使用递归遍历一个多级目录,打印所有文件的“绝对路径”。
public class Test23 {
public static void main(String[] args) {
File file = new File("D:\\IdeaProject\\JavaBase136\\day15\\src");
printFiles(file);
}
private static void printFiles(File file) {
//先判断是否存在
if (file.exists()) {
if (file.isDirectory()) {//是目录
//继续遍历且调用本方法
for (File f : file.listFiles()) {
printFiles(f);
}
} else if (file.isFile()) {//是文件
//打印文件
System.out.println(file.getAbsolutePath());
}
} else {//不存在
System.out.println("该目录或文件不存在...");
}
}
}