浅谈递归的运行流程

递归,简单来讲,就是写一个方法,然后这个方法又反复调用自己,达到一定的条件跳出

示例代码

static void Main(string[] args)
{
    G(9);
}
 
public static void G(int a)
{
    if (a>0)
    {
        G(a - 1);
        for (int i = 1; i <=a; i++)
        {
            Console.Write(i+"*"+a+"="+i*a+" ");
        }
        Console.Write("\r\n");
    }
}

运行结果

 

方法G反复调用自身,等到参数a的值小于等于0的时候就结束了,然后运行下面的for循环
运行流程如下

 

大家都知道,代码是从上往下执行,这都是同步执行,所以中间只要没执行完就会卡住,后面的代码就必须要等上面执行完才能继续执行,这就导致了G(9)是最先执行完,但是G(9)里面的for却是最后被执行
这个时候我们把调用自身放到for循环后面

static void Main(string[] args)
{
    G(9);
}
 
public static void G(int a)
{
    if (a>0)
    {
        for (int i = 1; i <=a; i++)
        {
            Console.Write(i+"*"+a+"="+i*a+" ");
        }
        Console.Write("\r\n");
        G(a - 1);
    }
}

 

这个时候就是反过来的,下次说说带返回参数的回调

我的博客地址:Wy博客​​​​​​​

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值