class Program
{
static void Main(string[] args)
{
A a = new A();
a.Test(15);
Console.ReadLine();
}
}
public class A
{
private object obj = new object();
public void Test(int i)
{
lock (obj)
{
if (i > 10)
{
i--;
Test(i);//11,12,13,14
}
else
{
Console.WriteLine(i);
}
}
}
}
直接上代码,当i走到 Console.WriteLine(i); 为10的时候,debug 又跑到Test(i);//11,12,13,14 ,不清楚是什么问题,求教了!
------解决思路----------------------
你一开始传入的是15,然后判断如果大于10就--然后调用自身,
第一次递归:14
第二次:13
第三次:12
第四次:11
第五次:10,这里走入else,然后退出
回到4,退出
回到3,退出
回到2,退出
回到1,退出
结束