我需要帮助来了解循环的工作原理

时间:2019-05-26 07:11:21

标签: c#

我很难理解如何掌握循环的工作原理,这并不是说我不知道​​循环的作用,但是我在理解如何将它们组合在一起时遇到了问题>如果有意义的话。

例如,在我提供的代码中,为什么我需要比< a多?
 以及为什么j必须比<i才能使输入成为三角形?

为什么我需要首先放置Console.Write("*"),为什么要最后放置Console.WriteLine("")才能形成三角形?

我希望有人可以帮助我进行这种简单的理解,因为到目前为止,我有点用记忆来控制它了,我实际上还不明白为什么所有这些都是按照形成三角形的方式来构造的。

(我的硬件分配工作是使用用户输入的内容(例如,当我使用这样的函数时,制作一个形成三角形的静态代码):triangle(3);
三角形将如下所示:

*
**
***)
static void triangle(int a)
{
    for (int i = 0; i < a; i++)
    {
        Console.Write("*");
        for (int j = 0; j < i; j++)
        {
            Console.Write("*");
        }
        Console.WriteLine("");
    }
}

1 个答案:

答案 0 :(得分:0)

是的:@yaho cho的答案解决了该错误。

嵌套循环 很难理解,因为它们可以在内部增长,因为它们将 back 引用到一个不断增长的外部循环。简单来说:如果您只是像这样循环计数:

一个

...暂停并让循环B运行

两个

---暂停并让循环B运行

三个

外部循环看起来很简单:一,二,三。但是,内部Loop B回溯到当前外部循环的计数器,因此它在内部不断增长!

您真的可以通过简单地重命名变量来使问题变得更加清晰---完美的实践:

    public static void PrintTriangle(int lineCount)
    {
        // Outer loop: for each line:

        // Number all lines from one;
        // and the star count will equal the line number:
        // (otherwise it is simply off by one if zero-based):

        for (int lineNumber = 1; lineNumber <= lineCount; ++lineNumber)
        {
            // For clarity: now the star count equals the line number:
            int starCount = lineNumber;


            // Inner loop: for each star:

            // Print the stars on this line:

            for (int star = 1; star <= starCount; ++star) {
                Console.Write('*');
            }

            // End each line with a line break:
            Console.WriteLine();
        }
    }