递归
递归的概念:来自英雄哥的视频
递归的案例一:算出1-100之间的数相加
/**
* @Classname : demo05
* @Description : TODO 递归 - 1-100之间的数的和
* @Author : lin_refuel@qq.com
*/
public class demo05 {
public static void main(String[] args) {
//递归就是自己调用自己
int sum = Recursion(100);
System.out.println("sum =" + sum);
}
private static int Recursion(int n) {
if(1 == n)//停止递的条件
return 1;//进入归
return n + Recursion(n -1);//进入递
}
}
运行结果:
递归案例二:递归传话
demo:
总之,3次递归,执行3次递,3次归
/**
* @Classname : demo05
* @Description : TODO 递归 - 1-100之间的数的和
* @Author : lin_refuel@qq.com
*/
public class demo05 {
public static void main(String[] args) {
//递归就是自己调用自己
Recursion(3);
}
private static void Recursion(int i) {
System.out.printf("我开始进行第%d次递的过程\n",i);
if(i > 1) //递结束
Recursion(i-1);
System.out.printf("我开始了往回归的第%d的过程\n",i);
}
}
运行结果:
递归案例三:File目录的递归操作demo:
import java.io.File;
/**
* @Classname : demo06
* @Description : TODO 递归遍历一个目录
* @Author : lin_refuel@qq.com
*/
public class demo06 {
public static void main(String[] args) {
//定义一个File对象,对文件目录的字符串进行包装
File file = new File("F:/Filedelete");
//定义一个递归开始遍历目录
// RecursionFile(file);
//定义一个删除目录文件
deleteFile(file);
}
private static void deleteFile(File file) {
//当前目录里面的内容转换成File类型,放入数组
File[] files = file.listFiles();
//遍历数组
for(File f : files){
//判断是否为目录
if(f.isDirectory()){
deleteFile(f); //调用自己
}else{
f.delete();//删除文件
}
}
file.delete();//删除目录本身
}
private static void RecursionFile(File file) {
//调用方法使当前目录里面的内容都变成File类型放到File类型数组
File[] files = file.listFiles();
//调用循环,开始进行目录访问,判断,返回
for(File f:files){
//判断是否是一个目录
if(f.isDirectory()){
//输出目录的绝对路径名字
//System.out.println(f.getAbsolutePath());
RecursionFile(f);//继续调用自己,
}else{
System.out.println(f.getAbsolutePath());
}
}
}
}