嵌套for循环:给出连接结果

时间:2018-06-10 07:50:21

标签: c#

我目前发现很难掌握一个简单的嵌套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?

有人可以解释一下吗?

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();
    }
}