一个函数/方法在函数/方法体内又调用了本身,我们称之为递归调用

    1. // 1) 方法调用自身
    2. // 2) 方法必须要有跳出的逻辑
    3. // 3) 方法调用自身时,传递的参数应该有规律
    4. // 4) scala 中的递归必须声明函数返回值类型
    5. def main(args: Array[String]): Unit = {
    6. println(fact(5))
    7. println(tailFact(5))
    8. }
    9. // 递归实现计算阶乘
    10. def fact(n: Int): Int = {
    11. if (n == 0) return 1
    12. fact(n - 1) * n
    13. }

    尾递归

    1. def tailFact(n: Int): Int = {
    2. @tailrec // 写的程序不是正确的尾递归会报错
    3. def loop(n: Int, currRes: Int): Int = {
    4. if (n == 0) return currRes
    5. loop(n - 1, currRes * n)
    6. }
    7. loop(n, 1)
    8. }