我写了#34; Ackerman" Visual Studio中的函数。 Stack Overflow非常快速地发生

时间:2017-09-27 22:02:09

标签: c# recursion visual-studio-2017 ackermann

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

我可以采取哪些措施让我的运行时间更长?

修改:我改变了&#39; Debug&#39;发布&#39;发布&#39;又多了一次迭代和几秒钟。

1 个答案:

答案 0 :(得分:1)

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