我对C#中的循环有一个基本的把握,但是我很难跟上这个特殊的功能。我试图在Visual Studio中运行该函数,但它会导致溢出异常。
"描述在给出以下功能的情况下调用doSomething(5)时会发生什么:"
private void doSomething(int x = 10)
{
for(var y = 1; y <= x; y++)
{
Console.WriteLine(y);
if(y == 3)
doSomething(x);
}
}
这是我从分析代码中可以看到的内容。从1开始,循环将检查y是否&lt; = 10.如果y <= 10,它将把y的值写入控制台。然后它将检查y是否等于3.如果为true,它将再次调用doSomething,再次检查y与10。
答案 0 :(得分:1)
这是一个递归函数,如果你调用doSomethig(5),当它进入循环时会永远向doSomethig发送相同的值(在本例中为5)。
答案 1 :(得分:0)
如果您创建模拟该代码如何为变量赋值,您会注意到y将始终被赋值为3,这意味着doSomething(x)将被称为无穷大时间并且调用无穷大时间会导致溢出异常。< / p>