数据结构之递归与栈

1.

 

 

 

 

代码实现:

复制代码
         /// <summary>
        /// 递归求阶乘
        /// </summary>
        /// <param name="n"></param>
        /// <returns></returns>
        public static int Func(int n)
        {
            if (n == 1)
            {
                return 1;
            }
            else
            {
                return n * Func(n - 1);
            } 
        }
复制代码

 

递归与栈

栈:是限定仅在表尾进行插入或删除操作的线性表。 

 函数递归是利用系统中栈进行操作的,通过对栈帧的一系列操作,从而实现递归。这个过程是由系统来完成的。

看下图,比如n=4,第一次是将func(4)放入栈中,同理依次放入栈中,栈是先进后出,现在是func(1)函数在最上面,需要注意的是此时n=1,就会直接退出func方法,通过return会离开方法的方法体的范围,对于栈中的数据来说,离开了方法体的范围,对应的数据就会从栈中移除,所以func(1)函数移出,同时算出结果为1,同理依次移出,最终结果为:1*2*3*4=24。

 

 

 其实普通函数和递归函数也是一样的,普通方法内部调用另一个方法,内部都是利用栈进行操作的。

 

posted @   安静点--  阅读(199)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示