快学Scala习题解答—第十二章 高阶函数

本篇博客探讨Scala中的高阶函数,包括利用高阶函数实现区间内的函数映射,使用reduceLeft找到数组中的最大值,无循环或递归实现阶乘,以及解决在特定场景下对偶序列的操作,如求和、corresponds方法的应用和unless控制抽象的实现。
摘要由CSDN通过智能技术生成
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)
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的情况
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值