Sta*_*tan 5 erlang recursion tail-recursion
对于erlang中的性能,尾递归是否比向前递归更好?
或者erlang编译器也优化了前向递归?
我的意思是,有没有理由使用尾递归而不是前向递归?
在我看来,前向递归看起来更漂亮.
尾递归通常更好,因为它使用更少的内存。您只需将需要的内容带入下一次调用,从而最大限度地减少堆栈上的内存利用率。此外,当优化尾递归代码时,不需要的函数返回将被丢弃,这将使其在某些情况下稍微快一些。
例如,如果一个函数的返回值是对另一个函数的调用,则无需将中间函数保留在堆栈上。所以代码从内部函数直接跳回调用者。
在某些情况下,Erlang 编译器将非尾递归优化为尾递归,但不要指望它。尽可能养成编写尾递归函数的好习惯。