尾递归函数
6.4 尾递归函数
核心定义:用
tailrec关键字修饰,满足「尾递归」条件的函数(函数最后一步是调用自身),编译器会将其优化为循环,避免栈溢出;使用场景:递归深度大的场景(如阶乘、斐波那契数列、树形遍历);
示例:
// 尾递归阶乘(避免栈溢出) tailrec fun factorial(n: Int, accumulator: Int = 1): Int { if (n <= 1) return accumulator return factorial(n - 1, n * accumulator) // 最后一步是调用自身 } fun main() { println(factorial(5)) // 120 }