遞歸,
方法的遞歸指在當前方法內調用自己的這種現象
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);
}
}
}
}