0
点赞
收藏
分享

微信扫一扫

Java方法递归调用基本使用

爱写作的小土豆 2022-03-13 阅读 148

方法递归调用基本使用

  • 基本介绍

    • 递归就是方法自己调用自己,每次调用时传入不同的变量.递归有助于编程者解决复杂问题,同时可以让代码变得简洁

  • 递归能解决什么问题

  • 递归举例: recursion

    • 打印问题

      package chapter7;
      public class Recursion01 {
          public static void main(String[] args) {
              T t1 = new T();
              t1.test(4);
          }
      }
      
      class T{
          public void test(int n){
              if (n > 2){
                  test(n - 1);  //到这发生了递归
              }
              System.out.println("n=" + n);
          }
      }
      

    • 把上面的class T加个 else

      class T{
          public void test(int n){
              if (n > 2){
                  test(n - 1);
              }else{
                  System.out.println("n=" + n);
              }
      
          }
      

      • 当n=3时,下面的栈进入到 if 后才会开个栈,就不会进入到 else 里了,所以 3,4就不会被输出了
  • 阶乘问题 factorial

    public class R1 {
        public static void main(String[] args) {
            T t1 = new T();
            int res = t1.factorial(5);
            System.out.println("5的阶乘 res" + res);
        }
    }
    
    class T{
    
    	    public int factorial(int n){
    	        if (n == 1){
    	            return 1;
    	        }else{
    	            return factorial(n - 1) * n;
    	        }
    	    }
    	}
    
    
    • 谁调用就返回给哪个,最后return 1返回给factorial(1)factorial(1)x2=2返回给 factorial(2),一层一层返回调用

  • 递归重要规则

    1. 执行一个方法时,就创建一个新的受保护的独立空间(栈空间)

    2. 方法的局部变量是独立的,不会互相影响, 比如n变量

    3. 如果方法中使用的是引用类型变量(比如数组, 对象), 就会共享该引用类型的数据

    4. 递归必须向退出递归的条件逼近,否则就是无限递归

    5. 当一个方法执行完毕, 或者遇到return 就会返回,遵守谁调用,就将结果返回给谁, 同时当方法执行完毕或者返回时, 该方法也就执行完毕

举报

相关推荐

0 条评论