【发布时间】:2016-01-26 09:51:10
【问题描述】:
我了解递归函数的问题和堆栈溢出问题的风险。
但是,如果一个函数能够针对尾递归进行优化,那么为什么不自动应用这种优化呢?为什么我需要标记一个可以用@tailrec优化的函数?
【问题讨论】:
-
我认为这个想法是,如果它无法进行尾部优化,你会得到一个错误,这与你的期望相反
-
scala编译器会自动优化尾递归方法,我认为tailrec注解只对调试有用,如果不能优化会报错。
-
所以这就像一个编译时检查,看看你的函数是否被编写为利用尾递归?
-
@Ende - 感谢推荐 之前没有找到那个。
-
标签: scala