Scala 尾递归标量

Scala 尾递归标量,scala,dictionary,filter,tail-recursion,Scala,Dictionary,Filter,Tail Recursion,我需要在Scala中使用这个尾部递归的帮助。我有以下方法标题: def filter[A](list:List[A], filter: A => Boolean): List[A] = 我必须用尾部递归编写方法体,并使用与h::t和Nil匹配的cases,但我不知道如何使用布尔值来实现这一点 我尝试了另一个例子,以尾部递归方式计算列表: def sum(list:List[Int]):Int = { def sumRec(list: List[Int], acc:Int): I

我需要在Scala中使用这个尾部递归的帮助。我有以下方法标题:

def filter[A](list:List[A], filter: A => Boolean): List[A] =
我必须用尾部递归编写方法体,并使用与
h::t
Nil
匹配的
cases
,但我不知道如何使用
布尔值来实现这一点

我尝试了另一个例子,以尾部递归方式计算
列表

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)
}
@你能帮我再解决一个我必须在Scala中解决的递归吗? 我需要使用递归将元素映射到给定的长度。 以下是应完成的代码:

def map[A,B](list:List[A], operation:A=>B):List[B] =

我不打算给您提供完整的答案,但这里有一个提示:您的第二个参数是一个测试函数,可以为集合中的每个项调用它,以决定是否应该删除它:

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
scala>def isOdd(x:Int)=x%2==1
isOdd:(x:Int)布尔型
scala>val过滤器:Int=>Boolean=isOdd
过滤器:Int=>Boolean=
scala>过滤器(3)
res0:Boolean=true
scala>过滤器(4)
res1:Boolean=false
考虑到您已经确定了递归和,并且记住累加器可以是List类型,这应该足以解决您的问题