遞歸調用

遞歸調用就是函數本身調用本身。函數

下面例子從函數執行控制角度分析遞歸的執行順序:spa

using System;

namespace Demo
{
    class Program
    {
        static void Main(string[] args)
        {
            InvokeSelfVoid(5);
            Console.WriteLine(InvokeSelf(5));
        }

        //無返回值
        public static void InvokeSelfVoid(int i)
        {
            if (i > 0)
            {
                i--;
                InvokeSelfVoid(i);
            }
            Console.WriteLine(i);
        } //執行以後,控制權交到InvokeSelfVoid(i)處,最後交到InvokeSelfVoid(5)處

        //有返回值
        public static int InvokeSelf(int i)
        {
            if (i > 0)
            {
                i--;
                Console.WriteLine(InvokeSelf(i));
            }
            return i; //執行以後,控制權交到InvoikeSelf(i)處,最後交到InvokeSelf(5)處
        }
    }
}

InvokeSelfVoid 和 InvokeSelf 是分別是無返回值和有返回值的遞歸調用方法。code

InvokeSelfVoid執行方法閉合"}"以後,控制權交到InvokeSelfVoid(i)處,最後交到InvokeSelfVoid(5)處。blog

同理,InvokeSelf執行return以後,控制權交到InvokeSelf(i)處,最後交到InvokeSelf(5)處。遞歸

控制檯輸出結果爲:0 0 1 2 3 4 0 0 1 2 3 4string

相關文章
相關標籤/搜索