不死神兔案例。
假设有一对兔子,从出生的第三个月开始,每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子。
假设所有的兔子都不会死。问题:二十个月后,兔子的对数是多少?
找规律:
月份 兔子的对数
第一个月 1
第二个月 1
第三个月 2
第四个月 3
第五个月 5
第六个月 8
...
由此课件,兔子的对数的数据是:
1,1,2,3,5,8,13,21,34...
规律:
1、从第三项开始,每一项都是前两项之和
2、说明前两项的数据是已知的
package com.shujia.wyh.day22;
public class DiGuiDemo3 {
public static void main(String[] args) {
/**
* 返回值类型:int
* 参数列表:int i 20
* <p>
* 出口条件:第一个月是1,第二个月也是1
* 递归的条件:从第三个月开始,每一个月的值是前两个月之和
*/
public static int Fibonacci(int i) {
//第一个月是1,第二个月也是1
if (i == 1 || i == 2) {
return 1;
} else {
//从第三个月开始,每一个月的值是前两个月之和
return Fibonacci(i - 1) + Fibonacci(i - 2);
}
}
}
遍历指定目录下所有的指定后缀名文件名称 E:\\java\\day22
分析:
1、将目录封装成File对象
2、获取该目录下所有的File对象组成的数组
3、遍历数组得到每一个File对象
4、判断得到的File对象是一个文件还是一个文件夹
1、如果他是一个文件夹,回到第二步
2、如果他是一个文件,判断文件名称是否以.java后缀
如果是,输出
不是,跳过
package com.shujia.wyh.day22;
import java.io.File;
public class DiGuiDemo4 {
public static void main(String[] args) {
//将目录封装成File对象
File file = new File("E:\\java\\day22");
//递归实现
getJavaFile(file);
}
public static void getJavaFile(File file){
//获取该目录下所有的File对象组成的数组
File[] files = file.listFiles();
//遍历数组得到每一个File对象
for(File f : files){
//判断是否是一个文件夹
if(f.isDirectory()){
getJavaFile(f);
}else {
//判断文件名称是否以.java后缀
if(f.getName().endsWith(".java")){
//如果是,输出
System.out.println(f.getName());
}
}
}
}
}
递归删除带内容的目录
分析:
1、获取File对象
2、获取该目录下所有的文件和文件夹组成的File对象数组
3、遍历数组得到每一个File对象
4、判断这个File对象是否是文件夹
是:返回第二步
不是:直接删除
package com.shujia.wyh.day22;
import java.io.File;
public class DiGuiDemo5 {
public static void main(String[] args) {
File file = new File("D:\\IdeaProjects\\bigdata15\\aaa");
deleteFile(file);
}
public static void deleteFile(File file) {
//获取该目录下所有的文件和文件夹组成的File对象数组
File[] files = file.listFiles();
if (files != null) {
//遍历数组得到每一个File对象
for (File f : files) {
//判断这个File对象是否是文件夹
if (f.isDirectory()) {
deleteFile(f);
} else {
System.out.println(f.getName() + "---" + f.delete()); //删除aaa下的内容
}
}
System.out.println(file.getName() + "---" + file.delete()); //删除aaa文件夹
}
}
}