5

有什么方法可以判断 F# 中的函数是否是尾递归的?

我试图解释它,但有些人似乎在挣扎并询问是否有办法确认他们所做的事情是尾递归的。您可以做些什么简单的事情(除了试图让它溢出堆栈)来确认尾部响应(或不)(最好在 IDE 中)?

(我试过 Reflector,但是当我打开 F# 项目时它就崩溃了!)

4

1 回答 1

5

这里(文章中有几个例子):

如何验证是否正在使用尾调用?

确保使用尾调用的最简单方法是理解和应用上一节中的规则。虽然 F# 编译器本身目前不提供任何方法来验证是否在特定调用站点使用了尾调用,但您可以通过使用MSIL Dissasembler (ildasm.exe) 查看代码的编译版本来确定。我们将在下面看到几个示例。

于 2013-10-29T13:06:55.447 回答