可以将F#函数视为尾递归,它使用TailCall .net操作码

Guy*_*der 4 performance f# tail-recursion tail-call-optimization

由于.net具有TailCall操作码,如果F#函数真正是尾递归的话,这可以用来确定吗?

如果是真的,是否有人制作了一个识别尾部和非尾部功能的VS插件?

kvb*_*kvb 6

请参阅F#团队博客上的此博客文章,了解F#如何编译尾调用.

简而言之,

  1. 直接递归尾调用通常转换为循环.
  2. 相互递归和间接非递归尾调用通常转换为.NET尾调用.

但请查看所有血腥细节的完整帖子.