尾递归 Scala
Tail recursion Scala
我需要有关 Scala 中尾递归的帮助。我有以下方法 header:
def filter[A](list:List[A], filter: A => Boolean): List[A] =
我必须使用尾递归编写方法 body 并使用与 h::t
和 Nil
匹配的 cases
但我不知道如何用 Booleans
?
做这个
我尝试了另一个示例,以 tail-recursive 样式计算 List
:
def sum(list:List[Int]):Int = {
def sumRec(list: List[Int], acc:Int): Int = list match {
case Nil => acc
case h::t => sumRec(t,acc+h)
}
sumRec(list,0)
}
@om-nom-nom 你能再帮我解决一个我必须在 Scala 中解决的递归问题吗?
我需要通过递归将元素映射到它们的给定长度。
这是应该完成的代码:
def map[A,B](list:List[A], operation:A=>B):List[B] =
我不会为你提供完整的答案,但这里有一个提示:你的第二个参数是一个测试函数,可以为你的 collection 中的每个项目调用它,以确定它是否是否应该删除:
scala> def isOdd(x: Int) = x % 2 == 1
isOdd: (x: Int)Boolean
scala> val filter: Int => Boolean = isOdd
filter: Int => Boolean = <function1>
scala> filter(3)
res0: Boolean = true
scala> filter(4)
res1: Boolean = false
鉴于您已经确定了递归求和并记住累加器可以是 List 类型,这应该足以解决您的问题。
我需要有关 Scala 中尾递归的帮助。我有以下方法 header:
def filter[A](list:List[A], filter: A => Boolean): List[A] =
我必须使用尾递归编写方法 body 并使用与 h::t
和 Nil
匹配的 cases
但我不知道如何用 Booleans
?
我尝试了另一个示例,以 tail-recursive 样式计算 List
:
def sum(list:List[Int]):Int = {
def sumRec(list: List[Int], acc:Int): Int = list match {
case Nil => acc
case h::t => sumRec(t,acc+h)
}
sumRec(list,0)
}
@om-nom-nom 你能再帮我解决一个我必须在 Scala 中解决的递归问题吗? 我需要通过递归将元素映射到它们的给定长度。 这是应该完成的代码:
def map[A,B](list:List[A], operation:A=>B):List[B] =
我不会为你提供完整的答案,但这里有一个提示:你的第二个参数是一个测试函数,可以为你的 collection 中的每个项目调用它,以确定它是否是否应该删除:
scala> def isOdd(x: Int) = x % 2 == 1
isOdd: (x: Int)Boolean
scala> val filter: Int => Boolean = isOdd
filter: Int => Boolean = <function1>
scala> filter(3)
res0: Boolean = true
scala> filter(4)
res1: Boolean = false
鉴于您已经确定了递归求和并记住累加器可以是 List 类型,这应该足以解决您的问题。