Java语法回顾之递归
读了那么多年的书让我明白一个道理。人要稳重,不要想到啥就做啥。做一行越久即使你不会,几年之后慢慢的你也会了,加上一点努力你或许你能成为别人眼中的专家。
递归的定义
/*
* 递归:方法定义调用方法本身的现象。
* 注意事项:
* A:递归一定要有出口。否则就会死递归。
* B:递归的次数不要过多。否则内存溢出。
*
* 构造方法:
* 不能使用递归的方式调用。
*
* 举例:
* public void show(int n)
* {
* if(n==0)
* {
* System.exit(0);
* }
* else{
* System.out.println("hell");
* show(n-1);
* }
* }
*
*/
递归求阶乘代码测试
/*
* 递归求阶乘:
* 出口:1!=1
* 规律:n!=n*(n-1)!
*
*/
public class DiGuiDemo2 {
public static void main(String[] args) {
int num = 5;
System.out.println(jc(num));
}
/*
* 返回值:int 参数:int n 如果jc(n)表达的是n的阶乘的话, 请问,n-1的阶乘如何表示? jc(n-1)
*/
public static int jc(int n) {
if (n == 1) {
// 出口
return n;
} else {
// 规律
return n * jc(n - 1);
}
}
}
用递归的方式删除指定目录
/*
* 需求:删除指定的目录。(目录是带有目录或者文件的)
* 思路:
* A:封装目录
* B:获取该目录下的所有文件或者文件夹的File[]数组。
* C:遍历File[]数组,获取到每一个File对象
* D:判断该File对数是否是
* 目录:返回B。(递归)
* 不是目录:
* 删除文件
* 作业:用断点看删除目录或者文件的过程。
*/
用递归的方式删除指定目录代码测试
public class DeleteFile {
public static void main(String[] args) throws FileNotFoundException {
File file = new File("//Users//xwf//Downloads//MatrixSaver");
deleteFiles(file);
}
private static void deleteFiles(File file) throws FileNotFoundException {
//第1步封装文件夹
File[] fileArray = file.listFiles();//1,test_deleteFiles; 2.1,aaa_deleteFiles; 2.2,bbb_deleteFiles;
if (fileArray != null) {
//如果封装的文件夹不为空,那么就进行遍历,获得每一个文件或文件夹
for (File f : fileArray) {
if (f.isDirectory()) {
//如果被封装文件夹的子文件还是个文件夹,那么继续封装起来进行判断
deleteFiles(f);
} else {
//如果被封装起来的子文件夹正好就是个文件,那么直接删除
System.out.println(f.getName() + "***" + f.delete());
}
}
}
System.out.println(file.getName() + "***" + file.delete());
// 如果文件夹为空,直接删除. 当if语句执行完时,就表示每次封装的目录下的文件被删除完毕。
}
}