Kotlin 支持一种称为尾递归的函数式编程风格。对于一些通常使用循环的算法,您可以使用递归函数来替代,而不会有堆栈溢出的风险。当一个函数被标记为 tailrec 修饰符并满足所需的正式条件时,编译器会优化掉递归,留下一个快速高效的基于循环的版本。