一个函数/方法在函数/方法体内又调用了本身,我们称之为递归调用
// 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 1fact(n - 1) * n}
尾递归
def tailFact(n: Int): Int = {@tailrec // 写的程序不是正确的尾递归会报错def loop(n: Int, currRes: Int): Int = {if (n == 0) return currResloop(n - 1, currRes * n)}loop(n, 1)}
