0

我是方法和循环的新手。如果有人可以解释为什么我的代码无法正常运行,将不胜感激。

  1. 代码首先循环并写入“测试”,然后运行第二个WriteLine。不应该只使用WriteLine一次,因为该方法在之前被调用和终止WriteLine

  2. 正在写 50 -而WriteLine 不是 20 + 。这是为什么?

以下是我的代码:

        }
        Count(20, 50);
        Console.ReadKey(true);
    }

static void Count(int first, int last)
{
    if (first <= last)
    {
        Console.WriteLine("Test!");
        Count(first + 1, last);
        Console.WriteLine(first);

    }
}  
4

1 回答 1

0

...该方法在 WriteLine 之前被调用并终止

不,它没有终止——它递归地调用自己。每次它调用自己时,它都会向“堆栈”添加一个方法调用。一旦first==last(即何时first50,堆栈中的最后一次调用Count()将移至下一条指令,并将打印50。然后它将终止(因为这是最后一条指令)并转到Count堆栈中的下一个调用。在这种情况下,first49。这就是为什么您会看到程序从 50 开始倒计时。

这就像将编号为 20 到 50 的卡片放在一堆,然后在达到 50 之后再读取它们。卡片将从 50 开始并下降。

如果您使用较小的间隙(例如 2 到 4)并观察调试器中的指令序列,这种行为会更加明显。

于 2013-08-14T02:32:44.223 回答