对于循环迭代解决方案

时间:2015-01-15 03:26:46

标签: c# for-loop iteration stack-overflow

我对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。

2 个答案:

答案 0 :(得分:1)

这是一个递归函数,如果你调用doSomethig(5),当它进入循环时会永远向doSomethig发送相同的值(在本例中为5)。

答案 1 :(得分:0)

如果您创建模拟该代码如何为变量赋值,您会注意到y将始终被赋值为3,这意味着doSomething(x)将被称为无穷大时间并且调用无穷大时间会导致溢出异常。< / p>