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); } } }