递归求阶乘内存分析

-----------------------------------------------------------
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

 

 内存分析完毕。

 

posted @ 2021-06-01 10:04  大灰狼21  阅读(87)  评论(0编辑  收藏  举报