C#做尾递归吗?

Vil*_*lor 32 c# tail-recursion

可能重复:
为什么.net/C#不会消除尾递归?

C#会做尾注吗?

我找不到任何文件告诉我它是否有.

Chr*_*ath 11

C#本身并不支持语言中的尾递归,但这里有一篇关于类似技术的有趣文章调用trampolining可以帮助你处理你的情况


Ken*_*nde 5

不幸的是,它至少还没有.

我不确定标准本身是否指定了(dis)允许尾递归的任何内容.无论如何,因为.Net支持尾递归,所以它很适合进入C#.

如果你真的需要.Net语言的尾递归,可以考虑使用F#作为替代.

  • 他是正确的,但是应该要求高调用优化。实际上,CLR正是出于Argument 1(博客末尾)中的原因才支持尾部调用。“对于CLR 4,x64 JIT有时不能兑现“尾巴”这一事实。前缀阻止了F#等功能语言的可行性。因此,我们努力改进x64 JIT,使其可以兑现“尾巴”前缀。时间,帮助F#成功。” http://blogs.msdn.com/b/clrcodegeneration/archive/2009/05/11/tail-call-improvements-in-net-framework-4.aspx (2认同)