1. 程式人生 > 實用技巧 >java io流之遞迴

java io流之遞迴

遞迴

概念:遞迴,指在當前方法內呼叫自己的這種現象

public void method(){
    System.out.println(“遞迴的演示”);
    //在當前方法內呼叫自己
    method();
}

遞迴分為兩種,直接遞迴和間接遞迴。

直接遞迴稱為方法自身呼叫自己。

間接遞迴可以A方法呼叫B方法,B方法呼叫C方法,C方法呼叫A方法。

public static void main(String[] args) {
        // TODO 自動生成的方法存根
        System.out.println(sum(100));
        System.out.println(get(
10)); } public static void a() { a(); } //利用遞迴計算1~100的和 public static int sum(int n) { if(n==1) { return 1; }else { return n+sum(n-1); } } //利用遞迴求100的成績 public static int get(int n) { if(n==1) {
return 1; }else { return n*get(n-1); } }
}

注意:遞迴一定要有條件限定,保證遞迴能夠停止下來,否則會發生棧記憶體溢位。

在遞迴中雖然有限定條件,但是遞迴次數不能太多。否則也會發生棧記憶體溢位。

public static void main(String[] args) {

        get(new File("F:\\java0512\\eclipse0512\\io0512"));
    }
    public static void get(File dir) {
        
//獲取當前目錄這一級的檔案和資料夾物件陣列 File[] files=dir.listFiles(); for (File file : files) { //如果當前file物件是資料夾那麼繼續遍歷 if(file.isDirectory()) { //列印資料夾 System.out.println(file+"資料夾"); get(file); }else { //如果不是資料夾則直接列印檔案 System.out.println(file); } } } }

public class MyFilter implements FileFilter{


@Override
public boolean accept(File pathname) {
if(pathname.isDirectory()) {
return true;
}
return pathname.getName().toLowerCase().endsWith(".txt");
}

}

氣泡排序

    public static void main(String[] args) {
        // 氣泡排序法
        int[] arr= {7,1,6,22,11,3,2};
        for (int i = 0; i < arr.length-1; i++) {
            for (int j = 0; j < arr.length-i-1; j++) {
                if(arr[j]>arr[j+1]) {
                    int n=arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=n;
                }
            }
        }
        for (int i : arr) {
            System.out.println(i);        
        }
    
    }

}