【发布时间】:2011-08-20 09:39:53
【问题描述】:
我正在学习 F#(函数式编程的新手,虽然多年来一直使用 C# 的函数式方面,但让我们面对现实吧,这是非常不同的),我读过的一件事是 F# 编译器识别尾递归并将其编译成一个while循环(见http://thevalerios.net/matt/2009/01/recursion-in-f-and-the-tail-recursion-police/)。
我不明白为什么你会写一个递归函数而不是一个while循环,如果它无论如何都会变成这样的话。特别是考虑到您需要做一些额外的工作来使您的函数递归。
我有一种感觉,有人可能会说 while 循环不是特别实用,并且您想执行所有功能等等,因此您使用递归,但是为什么编译器将其转换为 while 循环就足够了?
谁能给我解释一下?
【问题讨论】:
标签: f# tail-recursion