我有以下函数返回整数列表的元素之间的距离列表:
def dists(l: List[Int]) = {
//@annotation.tailrec
def recurse(from: Int, rest: List[Int]): List[Int] = rest match {
case Nil => Nil
case to :: tail => to - from :: recurse(to, tail)
}
l match {
case first :: second :: _ => recurse(first, l.tail)
case _ => Nil
}
}
Run Code Online (Sandbox Code Playgroud)
该::阻止我使用@tailrec虽然看上去调用注解recurse是在尾部位置.
是否有@tailrec兼容的方法进行连接?
我可以使用累加器但是我必须反转输入或输出,对吗?
编辑:我对递归方法特别感兴趣.我的具体用例有点复杂,因为一次调用recurse可以在结果列表中添加几个项目:
=> item1 :: item2:: recurse(...)
Run Code Online (Sandbox Code Playgroud)
距离函数只是一个证明问题的例子.