方法A{
方法B();
其它代码
}
方法B{
方法C();
其它代码
}
方法C{
方法D();
其它代码
}
方法D{
其它代码
}
方法A中调用方法B,A中的其它代码需要等待A中B方法调用完成才开始。
同理,直到调用到方法D停止调用其它方法,完成后回到方法C里面完成其它代码,再回到方法B里面完成其它代码,再回到方法A里面完成其它代码。
这样一种调用思想就是递归。
示例:
//递归的思想,方法内调方法本身,在方法未执行完成处于等待期间,直到判断到最后一次不再调用自己,开始释放空间 private void build(int floor){ //第一步,判断,调用 if(floor>1){ this.build(floor-1); } //第二步,自己执行 System.out.println("第:"+floor+"层"); } /** * 方法在执行时会在栈内存中开辟临时空间,每调用一次开辟一块内存空间,等完全执行完毕后释放空间。 * 1.判断5>1,调用 。第二步等待第一步完成后才开始调--->产生第一个零时内存空间 * 2.判断4>1,调用,第二步等待第一步完成后才开始调--->产生第二个临时内存空间 * 3.判断3>1,调用。第二步等待第一步完成后才开始调--->产生第三个临时内存空间 * 4.判断2>1,调用,第二步等待第一步完成后才开始调--->产生第四个临时内存空间 * 5.判断1>1,不调。第二步开始调用--->产生第5个临时内存空间 * 6.此时floor==1开始打印第一层,释放第5次产生的内存>>第:1层 * 7.此时floor==2开始打印第二层,释放第4次产生的内存>>第:2层 * 8.此时floor==3开始打印第三层,释放第3次产生的内存>>第:3层 * 9。此时floor==4开始打印第三层,释放第2次产生的内存>>第:4层 * 10.此时floor==5开始打印第三层,释放第1次产生的内存>>第:5层 */