def main(args: Array[String]): Unit = {
val tuples = println(values(x => x * x, 2, 5).toString)
}
def values(fun:Int => Int,low:Int,high:Int)={
for (i <- low to high)yield (i,fun(i))
}
2. 如何用reduceLeft得到数组中的最大元素?
val arr = Array(1,2,3,4,8,5)
val i: Int = arr.reduceLeft((x, y)=>if (x>y) x else y )
3. 用to和reduceLeft实现阶乘函数,不得使用循环或递归
val num =5
println(1 to num reduceLeft ((x, y) => x * y))
4. 前一个实现需要处理一个特殊情况,即n<1的情况。展示如何用foldLeft来避免这个需要
val num2 = -5
println((1 to num2).foldLeft(1)(_ * _))
5. 编写函数largest(fun:(Int)=>Int,inputs:Seq[Int]),输出在给定输入序列中给定函数的最大值。举例来说,largest(x=>10x-xx,1 to 10)应该返回25.不得使用循环或递归
def largest(fun:(Int)=>Int,inputs:Seq[Int])={
//方式1
inputs.map((fun(_))).max
}
def largest2(fun:(Int)=>Int,inputs:Seq[Int])={
//方式2
val key = inputs.reduceLeft((x,y) => if(fun(x)>fun(y)) x else y)
fun(key)
}
val a = Array("asd","df","aadc")
val b = Array(3,2,4)
val c = Array(3,2,1)
println(a.corresponds(b)((x, y) => x.length == y))
println(a.corresponds(c)((x, y) => x.length == y))
1. 编写函数values(fun:(Int)=>Int,low:Int,high:Int),该函数输出一个集合,对应给定区间内给定函数的输入和输出。比如,values(x=>x*x,-5,5)应该产出一个对偶的集合(-5,25),(-4,16),(-3,9),…,(5,25)def main(args: Array[String]): Unit = { val tuple...