12 高阶函数
12.1 编写函数values(fun:(Int)=>Int,low:Int,high:Int),该函数输出一个集合,对应给定区间内给定函数的输入和输出。比如,values(x=>x*x,-5,5)应该产出一个对偶的集合(-5,25),(-4,16),(-3,9),…,(5,25)
12.2 如何用reduceLeft得到数组中的最大元素?
12.3 用to和reduceLeft实现阶乘函数,不得使用循环或递归
12.4 前一个实现需要处理一个特殊情况,即n<1的情况
12.1 编写函数values(fun:(Int)=>Int,low:Int,high:Int),该函数输出一个集合,对应给定区间内给定函数的输入和输出。比如,values(x=>x*x,-5,5)应该产出一个对偶的集合(-5,25),(-4,16),(-3,9),…,(5,25)
object Test extends App {
def values(fun: (Int) => Int, low: Int, high: Int) = {
var arr = List[(Int,Int)]()
low to high foreach {
num =>
arr = (num, fun(num)) :: arr
}
arr
}
println(values(x => x * x, -5, 5)..reverse.mkString)
}
12.2 如何用reduceLeft得到数组中的最大元素?
object Test extends App {
val arr = Array(3,2,6,8,4,6,9,3,6,7,1,2)
print(arr.reduceLeft((a,b)=>if (a>b) a else b))
}
12.3 用to和reduceLeft实现阶乘函数,不得使用循环或递归
println(1 to 10 reduceLeft(_ * _))
12.4 前一个实现需要处理一个特殊情况,即n<1的情况