scala列表上的scala FoldRight函数

时间:2015-03-21 19:46:26

标签: list scala

我想实现一个带有列表的函数,例如List(3,4,5)并返回列表,其中每个元素递增n例如List(3 + n,4 + n,5 + n) - 如何使用foldRight编写此函数以及它的时间复杂度

例如list1 = List(3,4,5) define func(list1,2)给出 - List(5,6,9)

2 个答案:

答案 0 :(得分:5)

惯用法这是map的用例:

List(3, 4, 5).map(_ + 2) == List(5, 6, 7)

但是,可以使用foldRight

编写
List(3, 4, 5).foldRight(List.empty[Int]) { (n, acc) =>
  (n + 2) :: acc
}

这将具有O(n)的时间复杂度。 foldRight是线性操作,前置scala.collection.List是常量时间。

答案 1 :(得分:-2)

不确定为什么要使用foldRight

这更适合映射,即

List(3,4,5).map(_+2) == List(5,6,7)