Fork me on GitHub

递归方法(recursion)

Posted on 2019-08-23 10:06  攀一座山  阅读(1248)  评论(0编辑  收藏  举报
  • 递归:指在当前方法内调用自己的这种现象。

  • 递归的分类:

    • 递归分为两种,直接递归和间接递归。

    • 直接递归称为方法自身调用自己。

    • 间接递归可以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);
              }
          }
      }

       

       

Copyright © 2024 攀一座山
Powered by .NET 9.0 on Kubernetes