Java 递归

递归:自己调用自己

1 递归结构

  • 递归头:什么时候不调用自身方法。--没有头,将陷入死循环
  • 递归体:什么时候需要调用自身方法

2 例1-死循环

死循环,导致栈溢出

package com.study;

public class T {
    public static void main(String[] args) {
        T t = new T();
        t.test();
    }
    
    public void test(){
        test();
    }

}

PS:java 是栈机制

3 例2

package com.study;

public class T {
    public static void main(String[] args) {
        System.out.println(f(3));
    }
    //1!    1
    //2!    2*1==>2*f(2-1)
    //3!    3*2*1==>3*f(3-1)
    //5!    5*4*3*2*1

    //递归计算阶乘
    public static int f(int n) {
        if (n == 1) {
            return 1;
        } else {
            return n * f(n - 1);
        }
    }

}

  • 边界条件:到最后一个数的时候,程序执行到底。==>f(1)

  • 前阶段:当参数不到底时,不停的调用自身,直到底为止。==>直到f(1)为止

  • 返回阶段:n*(n-1)。从最大的数开始,一直递归到最后,得到结果后,一直不断返回。

PS:小计算通过递归,过于大的计算,容易GG。递归过多,容易影响机器性能

posted @ 2022-04-06 21:32  MR·Jerry  阅读(49)  评论(0)    收藏  举报