我目前发现很难掌握一个简单的嵌套for循环
的输出int result = 0;
for (int i = 1; i <= 3; i++)
{
for (int j = 1; j <= 2; j++)
{
result = result +i;
}
}
Console.WriteLine(result);
其中输出 12 。我知道j的结果是1和2,但是无法理解为什么最终结果是 12 而不是3?
有人可以解释一下吗?
答案 0 :(得分:2)
您在内循环的每次迭代中将i
的值添加到result
,并且内循环运行3次(外循环的3次迭代)。因此,第一次内循环运行时,您添加1
两次,第二次内循环运行时添加2
两次,最后一次运行时添加3
两次:< / p>
result = 1 + 1 + 2 + 2 + 3 + 3 = 12
答案 1 :(得分:2)
你的外循环有三次迭代。在这三次迭代中的每一次迭代中,您都在运行内循环:
for (int j = 1; j <= 2; j++)
{
result = result +i;
}
鉴于循环体不依赖j
,内循环总是运行两次,我们可以用以下内容替换整个内循环:
result = result + i;
result = result + i;
或者简化它:
result = result + (i * 2);
所以现在整个代码相当于:
int result = 0;
for (int i = 1; i <= 3; i++)
{
result = result + (i * 2);
}
Console.WriteLine(result);
所以在外循环的第一次迭代之后,result
为2(我们已经将2添加到0)。
在外循环的第二次迭代之后,result
为6(我们已经添加了4到2)。
在外循环的第三次迭代之后,result
为12(我们已经添加了6到6)。
答案 2 :(得分:1)
运行该测试,您将看到:
class Program
{
public static void test()
{
int result = 0;
for (int i = 1; i <= 3; i++)
{
Console.WriteLine("i["+i+"] : ");
for (int j = 1; j <= 2; j++)
{
Console.Write(" when : j["+j+"]");
Console.WriteLine("Adding " + i + "to" + result);
result = result + i;
}
}
Console.WriteLine(result);
Console.ReadLine();
}
static void Main(string[] args)
{
test();
}
}