Scala函数综合

一 需求


 
 

二 代码

object sumfunc {
  def sum(f:Int => Int)(a:Int)(b:Int):Int ={
  	@annotation.tailrec
  	def loop(n:Int,acc:Int):Int={
  		if(n>b){
  			println(s"n=${n},acc=${acc}")
  			acc
  		}else{
  			println(s"n=${n},acc=${acc}")
  			loop(n+1,acc+f(n))
  		}
  	}
  	loop(a,0)
  }                                               //> sum: (f: Int => Int)(a: Int)(b: Int)Int
  sum(x =>x)(1)(5)                                //> n=1,acc=0
                                                  //| n=2,acc=1
                                                  //| n=3,acc=3
                                                  //| n=4,acc=6
                                                  //| n=5,acc=10
                                                  //| n=6,acc=15
                                                  //| res0: Int = 15
  
  sum(x =>x*x)(1)(5)                              //> n=1,acc=0
                                                  //| n=2,acc=1
                                                  //| n=3,acc=5
                                                  //| n=4,acc=14
                                                  //| n=5,acc=30
                                                  //| n=6,acc=55
                                                  //| res1: Int = 55
  sum(x =>x*x*x)(1)(5)                            //> n=1,acc=0
                                                  //| n=2,acc=1
                                                  //| n=3,acc=9
                                                  //| n=4,acc=36
                                                  //| n=5,acc=100
                                                  //| n=6,acc=225
                                                  //| res2: Int = 225
  
  val sum1=sum(x =>x*x)_                          //> sum1  : Int => (Int => Int) = sumfunc$$$Lambda$13/757108857@6bdf28bb
  sum1(1)(5)                                      //> n=1,acc=0
                                                  //| n=2,acc=1
                                                  //| n=3,acc=5
                                                  //| n=4,acc=14
                                                  //| n=5,acc=30
                                                  //| n=6,acc=55
                                                  //| res3: Int = 55
}

 

  • 大小: 47 KB
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值