1.有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,
假如兔子都不死,问第二十个月的兔子对数为多少?(不死神兔)
假如兔子都不死,问第二十个月的兔子对数为多少?(不死神兔)
1)数组方式
package day0516homerwork;
public class Demo1 {
/*
* 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,
假如兔子都不死,问第二十个月的兔子对数为多少?(不死神兔)------------------数组完成
*/
public static void main(String[] args) {
int arr[] = new int[100];//定义数组
int m=20;
arr[1] = 1;//前两个月兔子数量为1只
arr[2] = 1;
arr[3] = 2;
System.out.println(arr[1]);
System.out.println(arr[2]);
for(int i=1;i<=m;i++){
if(i>=3){ //规律为:1+1+2+3+5+8+...斐波那契数列规律
arr[i] = arr[i-1] +arr[i-2];
}
System.out.println("第"+i+"个月的兔子数量为"+arr[i]);
}
}
}
2)递归方式
package day0516homerwork;
public class Demo2 {
/*
* 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,
假如兔子都不死,问第二十个月的兔子对数为多少?(不死神兔)-----------------递归完成
*/
public static void main(String[] args){
int sum=Rabbits(20);
System.out.println("第20个月兔子总数为"+sum);
}
private static int Rabbits(int n){
if(n==1 || n==2)//第一、二个月兔子数量均为1只
return 1;
else {
return Rabbits(n-1)+Rabbits(n-2);//递归调用Rabbits()方法 规律为:1+1+2+3+5+8+...斐波那契数列规律
}
}
}
2.需求:递归删除带内容的目录
假设项目路径下有一个demo文件夹里面里面又有一些文件夹和一些文件,请使用递归思路进行实现
package day0516homerwork; import java.io.File; //递归删除带内容的目录 public class Demo4 { public static void main(String[] args) { // 封装目录 File srcFolder = new File("demo"); // 递归实现 DeleteFolder(srcFolder); } /* * 方法: * 返回值类型:void * 参数列表:File srcFolder * 出口条件: * 如果是文件夹就删除 * 规律: * 从文件开始删除,一直到文件夹 */ private static void DeleteFolder(File srcFolder) { // 获取该目录下的文件或者文件夹的File数组 File[] fileArray = srcFolder.listFiles(); if (fileArray != null) {// 避开系统保护文件或者文件夹,其它都删除 // 遍历该File数组,得到每个File对象 for (File file : fileArray) { // 判断该File对象是否是文件夹 if (file.isDirectory()) { DeleteFolder(file); } else { System.out.println(file.getName() + "---" + file.delete()); } } System.out .println(srcFolder.getName() + "---" + srcFolder.delete()); } }
3.需求:请把E:\JavaSE目录下所有的java结尾的文件的绝对路径给输出在控制台
package day0516homerwork;
import java.io.File;
import java.io.FilenameFilter;
//请把E:\JavaSE目录下所有的java结尾的文件的绝对路径给输出在控制台
public class Demo3 {
public static void main(String[] args) {
File file=new File("E:\\javaSE");
//第一种方式:File数组
/*File [] filearray=file.listFiles();
if(filearray!=null) {//非空判断
for(File f:filearray) {
//遍历首先判断它是否是个文件,然后判断它以.java为尾的
if(f.isFile()) {
if(f.getName().endsWith(".java")) {
System.out.println(f.getName());
}
}
}
}*/
//第二种方法:File的高级功能---过滤器
String [] strarray=file.list(new FilenameFilter()
{
public boolean accept(File dir, String name) {
File file = new File(dir, name) ;
//判断是否文件
boolean flag = file.isFile() ;
boolean flag2 = name.endsWith(".java") ;
return flag && flag2 ;
//一步到位
//return new File(dir, name).isFile() && name.endsWith(".jpg") ;
}
}) ;
//遍历字符串数组
for(String s: strarray) {
System.out.println(s);
}
}
}