尾递归与柯里化
def bar(a:Int)(n:Int):Int = { if (n < 1) a else bar(a*n)(n-1) }
val factorial = bar(1)_
这样factorial(n) 就可以直接求出来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) 就可以直接求出来n的阶乘了
scala> factorial(10)
res0: Int = 3628800
2017-07-01
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)