java基礎:遞迴應用---遍歷檔案目錄
一:遞迴相關知識
程式呼叫自身的程式設計技巧稱為遞迴( recursion)。
一個過程或函式在其定義或說明中又直接或間接呼叫自身的一種方法,它通常把一個大型複雜的問題層層轉化為一個與原問題相似的規模較小的問題來求解,遞迴策略只需少量的程式就可描述出解題過程所需要的多次重複計算,大大地減少了程式的程式碼量。遞迴的能力在於用有限的語句來定義物件的無限集合。用遞迴思想寫出的程式往往十分簡潔易懂。
一般來說,遞迴需要有邊界條件、遞迴前進段和遞迴返回段。當邊界條件不滿足時,遞迴前進;當邊界條件滿足時,遞迴返回。
注意:
(1) 遞迴就是在過程或函式裡呼叫自身;
(2) 在使用遞增歸策略時,必須有一個明確的遞迴結束條件,稱為遞迴出口。
遞迴演算法一般用於解決三類問題:
(1)資料的定義是按遞迴定義的。(Fibonacci函式)
(2)問題解法按遞迴演算法實現。(回溯)
(3)資料的結構形式是按遞迴定義的。(樹的遍歷,圖的搜尋)
遞迴的缺點:
遞迴演算法解題的執行效率較低。在遞迴呼叫的過程當中系統為每一層的返回點、區域性量等開闢了棧來儲存。遞迴次數過多容易造成棧溢位等。
二:遍歷檔案目錄
/**
* 遍歷目錄下所有檔案
* @author 劉彥亮
* @version 1.0
*/
public class FileList1 {
public static void main(String[] args) {
File f = new File("D:/video");
tree(f);
}
public static void tree(File f) {
//獲取目錄下所有子檔案
File[] childFiles = f.listFiles();
//遍歷子檔案
for (int i = 0; i < childFiles.length; i++) {
//列印檔名
System.out.println(childFiles[i].getName());
//如果子檔案還是一個檔案目錄的話,呼叫自身
if (childFiles[i].isDirectory()) {
tree(childFiles[i]);
}
}
}
}
輸出結果:
但是這樣不能看出檔案目錄的結構,繼續完善一下程式碼:
public class FileList2 {
public static void main(String[] args) {
File f = new File("D:/video");
System.out.println(f.getName());
tree(f, 1);
}
public static void tree(File f, int index) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < index; i++) {
sb.append(" ");
}
// 獲取目錄下所有子檔案
File[] childFiles = f.listFiles();
// 遍歷子檔案
for (int i = 0; i < childFiles.length; i++) {
// 列印檔名
System.out.println(sb.toString() + childFiles[i].getName());
// 如果子檔案還是一個檔案目錄的話,呼叫自身
if (childFiles[i].isDirectory()) {
tree(childFiles[i], index++);
}
}
}
}
輸出結果:
相關文章
- 迭代及用遞迴遍歷File檔案遞迴
- python 遞迴遍歷目錄Python遞迴
- Java 資料夾遞迴遍歷Java遞迴
- Android安全開發之ZIP檔案目錄遍歷Android
- Android基礎 你必須瞭解的應用檔案目錄Android
- 遍歷二叉樹-------遞迴&非遞迴二叉樹遞迴
- 遍歷某一個指定目錄下的所有子目錄和檔案(遞迴)遞迴
- Java遍歷資料夾的兩種方法(非遞迴和遞迴)Java遞迴
- js遞迴遍歷講解JS遞迴
- Java遞迴遍歷資料夾及檔案過濾器使用(FileFilter)Java遞迴過濾器Filter
- 遞迴遍歷網站所有 url遞迴網站
- PHP遞迴遍歷資料夾PHP遞迴
- [java] 二叉樹的後序遍歷(遞迴與非遞迴實現)Java二叉樹遞迴
- 非遞迴實現先序遍歷和中序遍歷遞迴
- Python自學之路:遞迴、棧和佇列遍歷目錄Python遞迴佇列
- 遍歷檔案Java中遍歷出指定目錄中的所有檔案Java
- 二叉樹的非遞迴遍歷——java實現二叉樹遞迴Java
- 遞迴遍歷物件獲取value值遞迴物件
- 二叉樹非遞迴遍歷二叉樹遞迴
- 二叉樹的遍歷 → 不用遞迴,還能遍歷嗎二叉樹遞迴
- Python零基礎學習筆記(三十八)——遞迴方法、棧、佇列模擬遍歷目錄Python筆記遞迴佇列
- 二叉樹的四種遍歷(遞迴與非遞迴)二叉樹遞迴
- 【資料結構】二叉樹遍歷(遞迴+非遞迴)資料結構二叉樹遞迴
- Oracle Developer 6i 基礎應用,含遍歷BLOCKOracleDeveloperBloC
- 什麼是遍歷二叉樹,JavaScript實現二叉樹的遍歷(遞迴,非遞迴)二叉樹JavaScript遞迴
- 【JavaScript實用技巧(一)】迴圈遍歷與跳出迴圈遍歷JavaScript
- 程式碼隨想錄演算法訓練營,9月9日 | 二叉樹遞迴遍歷,迭代遍歷,層序遍歷演算法二叉樹遞迴
- 遍歷二叉樹的遞迴與非遞迴程式碼實現二叉樹遞迴
- Android遍歷所有控制元件的遞迴和非遞迴實現Android控制元件遞迴
- 二叉樹建立及遍歷演算法(遞迴及非遞迴)二叉樹演算法遞迴
- [work] python巢狀字典的遞迴遍歷Python巢狀遞迴
- 非遞迴先序遍歷二叉樹遞迴二叉樹
- 【刷題】二叉樹非遞迴遍歷二叉樹遞迴
- C++單連結串列遞迴遍歷操作C++遞迴
- 二叉樹的前中後序遍歷(遞迴和非遞迴版本)二叉樹遞迴
- 二叉樹——後序遍歷的遞迴與非遞迴演算法二叉樹遞迴演算法
- 遍歷二叉樹的迭代和遞迴方法二叉樹遞迴
- 二叉樹的非遞迴遍歷寫法二叉樹遞迴