1

我在 youtube 上观看此视频 - https://youtu.be/i7sm9dzFtEI ,并决定在 C# 中复制该函数会很有趣

好吧,我运行了它,它在 21 次调用和大约一秒钟后停止了。视频中这家伙的程序显然已经运行了大约 4 周,并且仍在运行。

static int ack(int m, int n)
{
    int answer;
    if (m == 0) answer = n + 1;
    else if (n == 0) answer = ack(m - 1, 1);
    else answer = ack(m - 1, ack(m, n - 1));
    return answer;
}
static void Main(string[] args)
{
    for (int i = 0; i < 6; i++)
        for (int j = 0; j < 6; j++)
            Console.WriteLine($"ackerman ({i},{j}) is:{ack(i, j)}");
    Console.ReadLine();
}

有什么办法可以让我跑得更久吗?

编辑:我从“调试”更改为“发布”并进行了一次迭代和几秒钟。

4

1 回答 1

1

跟踪给定参数的已计算值并返回缓存值,而不是一次又一次地计算它。

于 2017-09-27T22:08:08.190 回答