尾遞歸與柯里化
def bar(a:Int)(n:Int):Int = { if (n < 1) a else bar(a*n)(n-1) }
val factorial = bar(1)_
這樣factorial(n) 就可以直接求出來(lái)n的階乘了
scala> factorial(10)
res0: Int = 3628800
def bar(a:Int)(n:Int):Int = { if (n < 1) a else bar(a*n)(n-1) }
val factorial = bar(1)_
這樣factorial(n) 就可以直接求出來(lái)n的階乘了
scala> factorial(10)
res0: Int = 3628800
2017-07-01
該變量可能不會(huì)被用到 ,只有當(dāng)?shù)谝淮问褂脮r(shí) 使用 lazy val
2017-06-30
最新回答 / 隔三岔五的小幸福
使用的時(shí)候才會(huì)處理,避免內(nèi)存溢出啊。在Spark處理流式數(shù)據(jù)時(shí),由于數(shù)據(jù)一直實(shí)在增加的,如果每次都要進(jìn)行運(yùn)算,進(jìn)行處理,內(nèi)存早就溢出了~
2017-06-27
def sum(f: Int=>Int)(a:Int)(b:Int): Int ={
@annotation.tailrec
def loop(n:Int, acc:Int):Int = {
println("n:"+n+",acc:"+acc)
if(n>b) {
acc
}
else {
loop(n+1,acc+f(n))
}
}
loop(a, 0)
}
sum(x=>x*x)(1)(5)
@annotation.tailrec
def loop(n:Int, acc:Int):Int = {
println("n:"+n+",acc:"+acc)
if(n>b) {
acc
}
else {
loop(n+1,acc+f(n))
}
}
loop(a, 0)
}
sum(x=>x*x)(1)(5)