zoukankan      html  css  js  c++  java
  • 递归调用

    递归调用就是函数自己调用自己。

    下面例子从函数执行控制角度分析递归的执行顺序:

    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 是分别是无返回值和有返回值的递归调用方法。

    InvokeSelfVoid执行方法闭合"}"之后,控制权交到InvokeSelfVoid(i)处,最后交到InvokeSelfVoid(5)处。

    同理,InvokeSelf执行return之后,控制权交到InvokeSelf(i)处,最后交到InvokeSelf(5)处。

    控制台输出结果为:0 0 1 2 3 4 0 0 1 2 3 4

  • 相关阅读:
    BOZJ2200: [Usaco2011 Jan]道路和航线
    poj3662
    网络流
    最短路
    约瑟夫环
    二分图匹配
    HDU 3938 Portal
    背包dp专题训练
    noip2013day1模拟赛
    2017.10.24:lca专题系列
  • 原文地址:https://www.cnblogs.com/MrHacker/p/4460117.html
Copyright © 2011-2022 走看看