Python 面向物件程式設計的核心概念知識點簡介
阿新 • • 發佈:2020-12-14
遞迴
概述
- 遞迴:指的是當前方法呼叫自己的一種現象
-
遞迴的分類
-
- 遞迴分為兩類:直接遞迴和間接遞迴
- 直接遞迴:稱為方法自身呼叫自己的情況
- 間接遞迴:可以歸結為:方法A呼叫了方法B,方法B呼叫了方法C,方法C呼叫了方法A
-
-
注意事項:
- 遞迴一定要有邊界條件(條件限定) ,保證遞迴能夠停下來,否則會發生棧記憶體溢位.
- 在遞迴放縱雖然有限定條件,但是遞迴的次數也不能太多,否則也會發生棧記憶體溢位現象
- 構造方法禁止遞迴
使用遞迴列印多級目錄
public static void main(String[] args) { // 找到Hello檔案的路徑File file = new File("C:\\Users\\admin\\Desktop\\Hello"); //呼叫getAllFiles() getAllFiles(file); } /* 定義一個方法,引數傳遞File型別的目錄 方法中要對目錄進行遍歷 */ public static void getAllFiles(File file) { // 表明file此時是一個目錄 System.out.println(file);//首先先獲取到它直接子目錄和直接子檔案 File[] files = file.listFiles(); // 遍歷files目錄 for (File f : files) { // 判斷如果得到的f是一個目錄,需要再次遍歷 if (f.isDirectory()) { // 表明f是一個目錄,則繼續遍歷這個目錄 //getAllFiles方法就是獲取所有的檔案,引數傳遞的剛好是目錄。所以直接呼叫getAllFiles:遞迴(自己呼叫自己) getAllFiles(f); }else { // 此時f不是一個目錄,肯定是一個檔案 System.out.println(f); } } }
檔案過濾器優化
java.io.FileFilter是一個介面,是File的過濾器,該介面的物件可以傳遞給File類的listFiles(File Filter)作為引數,介面中只有有個方法:
booleanaccept(Filepathname) :測試pathname是否應該包含在當前的File目錄中,
如果符合,返回true.