Scala 尾递归标量
我需要在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
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类型,这应该足以解决您的问题