2.2 遞歸累加求和 計算 1---n 的和java
public class Exercise01 {數組 public static void main(String[] args) {ide int n=10;idea int num=Meth(n);spa System.out.println(num);.net }對象 public static int Meth(int n){遞歸 if(n==1){ci //若是==1 就返回get return 1; } //若是不等於1的話,遞歸n+(n+1); return n+Meth(n-1); }
} |
2.3 遞歸求階乘 階乘:全部小於及等於該數的正整數的積例如 n 的階乘:n!=n*(n-1)*…*3*2*1
public class Exercise02 { public static void main(String[] args) { // n!=n*(n-1); int n=6; int a=Meth(n); System.out.println(a); } public static int Meth(int n){ if(n==1){ return 1; } //1的階乘是1 // n不爲1時,方法返回 n! = n*(n‐1)! 遞歸調用getValue方法
return n*Meth(n-1); } } |
2.4 遞歸打印多級目錄
分析:多級目錄的打印,就是當目錄的嵌套,遍歷以前,沒法知道到底有多少級目錄,因此
咱們能夠使用遞歸實現
public class Exercise03 { public static void main(String[] args) {
//建立File對象 File ff=new File("F:\\"); Meth(ff); } public static void Meth(File demo){
//File[] listFiles();返回一個File數組,表示該file目錄中全部的文件和目錄
File[]files=demo.listFiles(); for(File ss:files){ //判斷若是是文件,就打印出絕對路徑 if(ss.isFile()){ //是文件就打印文件絕對路徑 System.out.println("文件名:"+ss.getAbsoluteFile()); }else{ //不是文件的話,就是目錄打印目錄的絕對路徑 System.out.println("目錄:"+ss.getAbsoluteFile()); //繼續遍歷,就造成遞歸的方法 Meth(ss); } } } } |
第三章 綜合練習
3.1 文件搜索
搜索某個目錄中.java 的文件,例如 IDEA 的工做空間:D:\2019-10\ideawork
分析: 一、 目錄搜索,沒法判斷多少級目錄,因此使用遞歸,遍歷全部的目錄
二、 遍歷目錄時,獲取的子文件,經過文件名,判斷是否符合條件
public class Exercise04 { public static void main(String[] args) {
//建立File對象 File ff=new File("D:\\Day02_demo2\\src\\day08"); //表示該目錄中的全部文件和目錄 File[]files= ff.listFiles(new Myinterfaces()); for(File ss:files){ System.out.println(ss.getName()); } } } class Myinterfaces implements FilenameFilter{ public boolean accept(File dir, String name){ //File表示當親過濾的對象,name表示當前過濾的文件名 if(name.endsWith(".java")){ return true; } return false; } } |