递归求阶乘内存分析
-----------------------------------------------------------
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
内存分析完毕。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .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语句:使用策略模式优化代码结构