在当前方法内调用自己的这种现象;
方法自身调用自己;
A方法调用B方法,B方法调用C方法,C方法调用A方法;
①递归一定要有条件的限定,保证要能停下来,否则会发生栈内存溢出;
②在递归中虽然有限定条件,但递归的次数不能太多,否则也会发生栈内存溢出;
③构造方法,禁止递归;
当调用方法的时候,方法的主体不变,每次调用方法的参数不同,可以使用递归;
num的累加 = num + (num-1)的累和,所以可以把累加和的操作定义成一个方法,递归调用;
package study.recursion;
public class Test {
    public static void main(String[] args) {
        System.out.println(sum(100));
    }
    private static int sum(int i){
        if(i==1){
            return 1;
        }
        return i + sum(i-1);
    }
}
n * (n-1)
package study.recursion;
public class Test {
    public static void main(String[] args) {
        System.out.println(factorial(5));
    }
    private static int factorial(int i){
        if(i==1){
            return 1;
        }
        return i * factorial(i-1);
    }
}