您的位置:首页 > 其它

scala之尾递归优化

2015-06-23 19:44 423 查看
并不是所有的尾递归都被优化的,在scala确实是这样的,所以scala中有一个注释来要求scala编译器务必尾递归优化,如果不行就报错,这个注释是

@tailrec


看看我们前面的两个例子
object DemoTest extends App {

def getSum2(list: List[Int]): Int = {
@tailrec
def sumHelp(list: List[Int], sum: Int): Int = {
if (list == Nil) sum
else sumHelp(list.tail, sum + list.head)
}
sumHelp(list, 0)
}
@tailrec
def getSum(list:List[Int]):Int = {
if(list == Nil) 0
else list.head + getSum(list.tail)
}
}


加上注解后头递归立即报错


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: