一个函数/方法在函数/方法体内又调用了本身,我们称之为递归调用
// 1) 方法调用自身
// 2) 方法必须要有跳出的逻辑
// 3) 方法调用自身时,传递的参数应该有规律
// 4) scala 中的递归必须声明函数返回值类型
def main(args: Array[String]): Unit = {
println(fact(5))
println(tailFact(5))
}
// 递归实现计算阶乘
def fact(n: Int): Int = {
if (n == 0) return 1
fact(n - 1) * n
}
尾递归
def tailFact(n: Int): Int = {
@tailrec // 写的程序不是正确的尾递归会报错
def loop(n: Int, currRes: Int): Int = {
if (n == 0) return currRes
loop(n - 1, currRes * n)
}
loop(n, 1)
}