用 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)
}