【发布时间】:2019-01-17 18:45:36
【问题描述】:
def pack[A](l: List[A]):List[List[A]] = {
def _pack(res: List[List[A]], rem: List[A]):List[List[A]] = rem match {
case Nil => res
case h::tail if (res.isEmpty || res.last.head != h) => _pack(res:::List(List(h)), tail)
case h::tail => _pack(res.init:::List(res.last:::List(h)), tail)
}
_pack(List(),l)
}
以上代码将列表元素的连续重复项打包到子列表中。
【问题讨论】:
-
因为这就是尾递归。
标签: scala function functional-programming nested