遞歸方法(recursion)


  • 遞歸:指在當前方法內調用自己的這種現象。

  • 遞歸的分類:

    • 遞歸分為兩種,直接遞歸和間接遞歸。

    • 直接遞歸稱為方法自身調用自己。

    • 間接遞歸可以A方法調用B方法,B方法調用C方法,C方法調用A方法。

  • 注意事項

    • 遞歸一定要有條件限定,保證遞歸能夠停止下來,否則會發生棧內存溢出。

    • 在遞歸中

      #### 語法案例演示一:計算1-100之間所有自然數的和
      
      ```java
      public class RecursionMethod1{
          public static void main(String[] args) {
              Count c = new Count();
              
              int sum = c.sum(100);
              System.out.println("1-100的和:" + sum);
          }
      }
      class Count{
          public int sum(int n){
              if(n == 1){
                  return 1;
              }else{
                  return n + sum(n-1);
              }
          }
      }
      ```

       

      求n!
      public class RecursionMethod2{
          public static void main(String[] args) {
              Count c = new Count();
              
              int jieCheng = c.jieCheng(10);
              System.out.println("10的階乘是:" + jieCheng);
          }
      }
      class Count{
          public int jieCheng(int n){
              if(n <= 1){
                  return 1;
              }else{
                  return n * jieCheng(n-1);
              }
          }
      }
      #### 計算斐波那契數列(Fibonacci)的第n個值
      
      規律:一個數等於前兩個數之和,
      
      ​    f(0) =1,
      
      ​    f(1) = 1,
      
      ​    f(2) = f(0) + f(1) =2,
      
      ​    f(3) = f(1) + f(2) = 3, 
      
      ​    f(4) = f(2) + f(3) = 5
      
      ​    ...
      
      ​    f(n) = f(n-2) + f(n-1);
      
      
      public class RecursionMethod3{
          public static void main(String[] args) {
              Count c = new Count();
              
              System.out.println("f(10):" + c.f(10));
              System.out.println("f方法被調用的總次數:" + c.total);
          }
      }
      class Count{
          int total = 0;
          public int f(int n){
              total++;
              if(n <= 1){
                  return 1;
              }else{
                  return f(n-2) + f(n-1);
              }
          }
      }

       

       


  • 免責聲明!

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



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