数据结构之递归与栈

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 @ 2021-08-28 13:51  安静点--  阅读(208)  评论(0)    收藏  举报