简而言之: 递归即自我调用
经典例子: 阶乘
public class TEST {
public static void main(String[] args) {
System.out.println(method(5));
}
public static int method(int x){
if (x == 1) return 1; //递归结束条件
else return x*method(x-1);
}
}
if (x == 1) return 1 : 递归的结束条件
else return x*method(x-1) :
第一层: x*method(x-1)
第二层: (x-1)*method(x-2)
第三层: (x-2)*method(x-3)
第四层: (x-3)*method(x-4)
第五层: return 1
程序到达第五层后开始产生返回值 返回值与上一层的因数相乘后再作为返回值返回再上一层 直至返回至第一层 第一层作为方法的最终返回值返回给调用者
当然 若传入参数为1 则在第一层直接返回1 无递归行为
注: 小规模计算可以使用递归 大规模计算则不推荐 因为递归算法较为占用资源