递归
方法的递归:方法定义中调用方法本身的现象
package com.shujia.day14;
/*
new StringBuffer().append().append() 这个叫方法的链式调用
show(fun1()) 方法的嵌套调用
递归必备前提:
1、进入递归的入口
2、方法要有返回值
3、结束递归的出口(如果没有出口就是死递归)
案例1:
从前有座山,山里有座庙,庙里有个老和尚,老和尚在给小和尚讲故事:n1
从前有座山,山里有座庙,庙里有个老和尚,老和尚在给小和尚讲故事: n2
从前有座山,山里有座庙,庙里有个老和尚,老和尚在给小和尚讲故事: n3
从前有座山,山里有座庙,庙里有个老和尚,老和尚在给小和尚讲故事: n4
从前有座山,山里有座庙,庙里有个老和尚,老和尚在给小和尚讲故事: n5
... n*
设置出口(结束条件):老和尚圆寂了,山倒了。
案例2:
学习大数据,为了找工作,为了赚钱,为了娶媳妇,为了生娃:
学习大数据,为了找工作,为了赚钱,为了娶媳妇,为了生娃:
学习大数据,为了找工作,为了赚钱,为了娶媳妇,为了生娃:
学习大数据,为了找工作,为了赚钱,为了娶媳妇,为了生娃:
...A
设置出口(结束条件):娶不到媳妇。
需求:求5的阶乘
*/
public class DiGuiDemo1 {
public static void main(String[] args) {
System.out.println(jieCheng(5));
for (int i = 1; i < 10; i++) {
System.out.println(i);
}
}
// public static void fun1(){
// fun1();
// }
// 5! = 5*4*3*2*1;
public static int jieCheng(int number) {
//结束条件
if (number == 1) {
return 1;
} else {
return number * jieCheng(--number);
}
// return number * jieCheng(--number);// OOM (out of memory)
}
}
递归与File的结合练习1
package com.shujia.day15;
import java.io.File;
/*
递归遍历E:\\目录下指定后缀名结尾的文件名称
递归方法的前提:
1、要有入口
2、方法要有返回值(看情况)
3、要有出口
分析:
1、将E盘封装成File对象
2、获取当前目录下所有的文件或者文件夹组成的File对象数组
3、挨个遍历每一个File对象
1)如果是一个文件,且是以.java后缀的,那就输出
2)如果是一个文件夹,回到第2步
*/
public class DiGuiTest1 {
public static void main(String[] args) {
File file = new File("E:\\");
show(file);
}
public static void show(File file){
//获取当前目录下所有的文件或者文件夹组成的File对象数组
File[] files = file.listFiles();
//挨个遍历每一个File对象
if(files!=null){
for (File file1 : files) {
if(file1.isFile() && file1.getName().endsWith(".java")){
System.out.println(file1.getName());
}else {
show(file1);
}
}
}
}
}
递归与File的结合练习2
package com.shujia.day15;
import java.io.File;
/*
递归删除带内容的目录 E:\\data
分析:
1、将E:\\data封装成File对象
2、获取File对象下面所有文件和文件夹组成的File对象数组
3、遍历File对象数组,判断是否是文件或者文件夹
1)如果是文件,就直接delete
2)如果是文件夹,继续回到第2步
*/
public class DiGuiTest2 {
public static void main(String[] args) {
File file = new File("E:\\data");
deleteFile(file);
}
public static void deleteFile(File file) {
File[] files = file.listFiles();
if (files != null) {
for (File file1 : files) {
if(file1.isFile()){
file1.delete();
}else {
deleteFile(file1);
}
}
}
file.delete();
}
}
标签:file1,File,递归,file,public,有座
From: https://www.cnblogs.com/peculiar/p/18061959