尾递归 Scala

Tail recursion Scala

我需要有关 Scala 中尾递归的帮助。我有以下方法 header:

def filter[A](list:List[A], filter: A => Boolean): List[A] =

我必须使用尾递归编写方法 body 并使用与 h::tNil 匹配的 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 类型,这应该足以解决您的问题。