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

  • 相关阅读:
    3
    正确的消费理念和方式
    2
    1
    善待精力,保持体力,保持热情
    为什么不从今天开始呢?
    c++中的新成员
    函数重载分析下
    函数重载分析上
    函数参数的扩展
  • 原文地址:https://www.cnblogs.com/MrHacker/p/4460117.html
Copyright © 2011-2022 走看看