遞歸方法對於解決遞歸結構的問題非常有效。無需使用遞歸即可輕鬆解決前面的範例。本節提出了一個不使用遞迴很難解決的問題。問題是找到目錄的大小。目錄的大小是目錄中所有檔案大小的總和。目錄 d 可以包含子目錄。假設一個目錄包含檔案f1、f2、...、fm和子目錄d1、d2、...、dn,如下圖所示。
目錄的大小可以遞歸定義如下:
尺寸(d) = 尺寸(f1) 尺寸(f2) ... 尺寸(fm) 尺寸(d1) 尺寸(d2) ... 尺寸(dn)
File類別可用來表示檔案或目錄並取得檔案和目錄的屬性。 File 類別中的兩個方法對於解決此問題很有用:
下面的程式碼給了一個程序,提示使用者輸入目錄或檔案並顯示其大小。
如果file物件表示一個目錄(第20行),則遞歸呼叫目錄中的每個子項(檔案或子目錄)以獲得其大小(第23行)。如果 file 物件代表一個檔案(第 26 行),則取得檔案大小並將其新增至總大小(第 27 行)。
如果輸入不正確或不存在的目錄會發生什麼?程式將偵測到它不是目錄並呼叫 file.length()(第 27 行),傳回 0。因此,在這種情況下, getSize 方法將傳回 0.
為了避免錯誤,測試所有案例是一個很好的做法。例如,您應該測試程式的檔案輸入、空目錄、不存在的目錄和不存在的檔案。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3