递归的缺点:效率低,容易出现栈溢出
尾递归的思想:每次都利用调用参数传回的值去计算
案例:
// 递归
def factorial(n:Int):Int=
if(n<=0) 1
else n*factorial(n-1)
factorial(5)
//尾递归
@annotation.tailrec
def factorial(n:Int,m:Int) :Int=
if (n<=0) m
else factorial(n-1, m*n)
factorial(5, 1)