【发布时间】:2013-11-08 15:39:20
【问题描述】:
有什么方法可以判断 F# 中的函数是否是尾递归的?
我试图解释它,但有些人似乎很挣扎,并询问是否有办法确认他们所做的是尾递归。您可以做些什么简单的事情(除了试图让它溢出堆栈)来确认尾部响应(或不)(最好在 IDE 中)?
(我尝试过 Reflector,但是当我打开 F# 项目时它就崩溃了!)
【问题讨论】:
-
你可以试试其他的反编译器,现在已经很多了。
-
我尝试了 JetBrains,但它也崩溃了(在我的机器上安装了一堆废话,比如控制面板!)
-
我想我的问题是“为什么”?如果有人在他们的代码中看到堆栈溢出,那么他们会想要确保他们有 TCO,但这应该是相当明显的。否则,这听起来有点过早的优化。
-
我只是想帮助教它;对事物不熟悉的人通常想检查他们是否做对了;这不是关于优化特定案例,而是在需要时了解如何去做:-)
标签: .net f# functional-programming tail-recursion