scala函数练习

用 to 和 reduceLeft 实现阶乘函数,不得使用循环或者递归。

考虑n<1 的情况。使用 foldLeft 来避 免这个情况。

def jc(n:Int)={
     val ntmp=Array(n)
     if(ntmp.foldLeft(0)((x,y)=>{x+y})<=0){
       0
       println("小于0错误")
    } else {
      (1 to n).reduceLeft(_ * _)
    }
   }

编写函数 largestAt(fun:(Int)=>Int,inputs:Seq[Int]),返回最大的输出对应的输入。

举例来说,largestAt((x:Int)=>x*x,1 to 5)应该返回 5。不得使用循环或递归。

def largest(fun:(Int)=>Int,inputs:Seq[Int])={
      val num=inputs.map(fun).reduce(_ max _)
      val mapTmp=inputs.map(x=> x -> fun(x) )
      val mapTmp2=mapTmp.filter(x=>x._2==num)
      mapTmp2.map(x=>x._1)
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值