递归求阶乘内存分析

-----------------------------------------------------------
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 @   大灰狼21  阅读(93)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示