一 递归函数
在函数式编程中实现循环的一种技术。
例子:计算n!
def factorial (n:Int):Int =
if (n<=0) 1
else n * factorial(n-1)
二 尾递归函数
尾递归函数中所有递归形式的调用都出现在函数的末尾。
当编译器检测到一个函数调用时尾递归的时候,它就覆盖当前的活动记录而不是在栈中去创建一个新的。
三 代码
package test_first
object tailrec extendsApp{
@annotation.tailrec
def factorial(n:Int,m:Int):Int=
if(n<=0) m
else factorial(n-1,m*n)
println(factorial(5,1))
}
四 运行结果
120