相关疑难解决方法(0)

为什么.NET/C#不能优化尾调用递归?

我发现这个问题关于哪些语言优化尾递归.为什么C#不会优化尾递归?

对于具体情况,为什么不将此方法优化为循环(Visual Studio 2008 32位,如果这很重要)?:

private static void Foo(int i)
{
    if (i == 1000000)
        return;

    if (i % 100 == 0)
        Console.WriteLine(i);

    Foo(i+1);
}
Run Code Online (Sandbox Code Playgroud)

.net c# optimization tail-recursion

102
推荐指数
4
解决办法
3万
查看次数

LinqPad刚刚撞上我.我的代码在磁盘上的任何位置吗?

我在制作一些稍微不那么微不足道的东西时撞毁了LinqPad.我不想重新启动它,直到我确定不会危及恢复我的工作(如果可能的话).我的问题是:LinqPad是否写了临时文件,可能仍然包含我编写的代码?

对于后人来说,这是一个每次都崩溃LinqPad的测试案例(也发布到LinqPad论坛):

void Main()
{
    Crasher.Crash();
}
class Crasher
{
    public static void Crash()
    {
        var a=0;
        Crash();
        a++; //let's get something in the tail so compiler 
             //doesn't optimise tail recursion and prevent
             //stackoverflow
    }
}
Run Code Online (Sandbox Code Playgroud)

crash linqpad

5
推荐指数
1
解决办法
1253
查看次数

标签 统计

.net ×1

c# ×1

crash ×1

linqpad ×1

optimization ×1

tail-recursion ×1