递归求阶乘内存分析
-----------------------------------------------------------
public class DiGuiDemo01 {
public static void main(String[] args) {
int result = jc(5);
System.out.println("5的阶乘是:" + result);
}
public static int jc(int n) {
if (n == 1) {
return 1;
} else {
return n * jc(n - 1);
}
}
}
-----------------------------------------------------------
程序从main方法开始执行,main 方法就要加载到栈内存;
定义了result变量用于接收jc(5)的结果,此变量就会在main方法中出现
接着调用jc方法,方法进栈,参数为5,则走else,最终返回5*jc(4),于是又来一个jc方法
接着调用jc方法,方法进栈,参数为4,则走else,最终返回4*jc(3),于是又来一个jc方法
以此类推
最后到达递归的出口, 返回1,说明方法已算完,方法结束,从栈内存消失
返回2*1,说明方法已算完,方法结束,从栈内存消失。
以此类推,
result变量接收到返回的5*24=120
内存分析完毕。