java遞歸


 遞歸:方法定義中調用方法本身    如果是方法的嵌套調用 這不是遞歸
基本思想就是“自己調用自己” 一個使用遞歸技術的方法將會直接或者間接的調用自己
 幾個應注意的點:
  遞歸一定要有出口否則就是死遞歸
  遞歸的次數不能太多 否則就內存溢出
  構造方法不能遞歸使用

例:

public class DiGuiDemo {
    // public DiGuiDemo() {
    // DiGuiDemo();
    // }
}

遞歸求n的階乘

public class DiGuiDemo {
    public static void main(String[] args) {
        int jc = 1;
        for (int x = 2; x <= 5; x++) {
            jc *= x;
        }
        System.out.println("5的階乘是:" + jc);
        
        System.out.println("5的階乘是:"+jieCheng(5));
    }
    
    /*
     * 做遞歸要寫一個方法:
     *         返回值類型:int
     *         參數列表:int n
     * 出口條件:
     *         if(n == 1) {return 1;}
     * 規律:
     *         if(n != 1) {return n*方法名(n-1);}
     */
    public static int jieCheng(int n){
        if(n==1){
            return 1;
        }else {
            return n*jieCheng(n-1);
        }
    }
}


有一對兔子,從出生后第3個月起每個月都生一對兔子,小兔子長到第三個月后每個月又生一對兔子,假如兔子都不死,問第二十個月的兔子對數為多少?
分析:我們要想辦法找規律  兔子對數

第一個月:     1
第二個月:    1
第三個月:    2
第四個月:    3    
第五個月:    5
第六個月:    8
由此可見兔子對象的數據是:  1,1,2,3,5,8...
從第三項開始,每一項是前兩項之和

public static int fib(int n) {
        if (n == 1 || n == 2) {
            return 1;
        } else {
            return fib(n - 1) + fib(n - 2);
        }
    }
}

 

把E:\JavaSE目錄下所有的java結尾的文件的絕對路徑給輸出在控制台

private static void getAllJavaFilePaths(File srcFolder) {
      // 獲取該目錄下所有的文件或者文件夾的File數組
      File[] fileArray = srcFolder.listFiles();

      // 遍歷該File數組,得到每一個File對象
      for (File file : fileArray) {
          // 判斷該File對象是否是文件夾
          if (file.isDirectory()) {
              getAllJavaFilePaths(file);
          } else {
              // 繼續判斷是否以.java結尾
              if (file.getName().endsWith(".java")) {
                  // 就輸出該文件的絕對路徑
                  System.out.println(file.getAbsolutePath());
              }
          }
     }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM