c# - 10,000 后递归加速

标签 c# recursion time

我正在运行这段代码:

public static void func(int i)
{             
        Console.WriteLine(i);
        func(i + 1);
}

static void Main(string[] args)
{
    func(0);
}

显然它会导致 StackOverflowException,但会发生一些奇怪的事情:从 i = 0 到 i = 10,000 它运行得非常慢,(在我的计算机上大约 13 秒,使用 visual studio 2015)但是从 10,000 到 20,000 它几乎立即(大约 1第二)。为什么会这样?

谢谢。

最佳答案

您是否将控制台窗口的缓冲区大小定义为 10,000 行? WriteLine 是代码中最慢的部分。一旦达到最大行数,控制台窗口似乎会更快。

关于c# - 10,000 后递归加速,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36413551/

相关文章:

java - 在Java中获得可靠的单调时钟

c# - 使用代码优先模型的 "Composable"全文搜索

java - 使用java中的递归字段转换对象并包装到另一个对象

python - 装饰器中的无限递归(类似乎是从自身继承的)

java - 检查 startTime 和 endTimer 是否在两个时间之间

time - gem5模拟时间高

c# - 如何使类真正不可变?

c# - 各种 NuGet 包中的 Azure CloudStorageAccount 命名空间冲突以及迁移到较新的 Azure SDK

c# - Graph API 拒绝访问,即使我授予了访问权限

haskell - 修复 OCaml 中的数据类型