を試してみる。
// P05 (*) Reverse a list.
// Example:
// scala> reverse(List(1, 1, 2, 3, 5, 8))
// res0: List[Int] = List(8, 5, 3, 2, 1, 1)
def builtIn[T](xs: List[T]): List[T] = xs.reverse
def recursive[T](xs: List[T]): List[T] = xs match {
case Nil => xs
case h :: tail => recursive(tail) ::: List(h)
}
// 末尾再帰版
def tailRecursive[T](xs: List[T]): List[T] = {
def recursive[T](rest: List[T], result: List[T] ): List[T] = rest match {
case Nil => result
case h :: tail => recursive(tail, List(h) ::: result)
}
recursive(xs, Nil)
}
解答例
foldLeftってのがあったか!
def foldLeft[T](xs: List[T]): List[T] =
xs.foldLeft(List[T]()){(r, h) => h :: r}
No comments:
Post a Comment