遞歸在方法中的應用

遞歸,

方法的遞歸指在當前方法內調用自己的這種現象

public void method(){

      System.out.println(“遞歸的演示”);

      //在當前方法內調用自己

      method();

}

遞歸分爲兩種,直接遞歸和間接遞歸。

直接遞歸稱爲方法自身調用自己。間接遞歸可以A方法調用B方法,B方法調用C方法,C方法調用A方法。

遞歸的代碼演示,計算1-n之間的和,使用遞歸完成

public class DiGuiDemo {

      publicstaticvoidmain(String[] args) {

           //計算1~num的和,使用遞歸完成

           intn = 5;

           intsum = getSum(n);

           System.out.println(sum);

          

      }

      publicstaticintgetSum(intn) {

           if(n== 1){

                 return1;

           }

           returnn + getSum(n-1);

      }

}

 

注意:

1在遞歸中雖然有限定條件,但是遞歸次數不能太多。否則也會發生棧內存溢出。

2遞歸的時候一定要給自己留一個出口,不然就是死遞歸,會無限循環.

3構造方法不能作爲遞歸

遞歸打印所有子目錄中的文件路徑

編寫一個方法用來打印指定目錄中的文件路徑,並進行方法的調用

要求:若指定的目錄有子目錄,那麼把子目錄中的文件路徑也打印出來

步驟:

      1.指定要打印的目錄File對象

      2.調用getFileAll()方法

           2.1獲取指定目錄中的所有File對象

           2.2遍歷得到每一個File對象

           2.3 判斷當前File 對象是否是目錄

      判斷結果爲true,說明爲目錄,通過遞歸,再次調用步驟2的getFileAll()方法

判斷結果爲false,說明是文件,打印文件的路徑

代碼演示

      publicstaticvoidmain(String[] args) {

           Filefile = newFile("d:\\test");

           getFileAll(file);

      }

      //獲取指定目錄以及子目錄中的所有的文件

      publicstaticvoidgetFileAll(File file) {

           File[]files = file.listFiles();

           //遍歷當前目錄下的所有文件和文件夾

           for(File f : files) {

                 //判斷當前遍歷到的是否爲目錄

                 if(f.isDirectory()){

                      //是目錄,繼續獲取這個目錄下的所有文件和文件夾

                      getFileAll(f);

                 }else{

                      //不是目錄,說明當前f就是文件,那麼就打印出來

                      System.out.println(f);

                 }

           }

      }

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章