在Kotlin中不能返回tailrec函数的阶乘结果

我在Kotlin练习递归,并决定创建一个阶乘函数

fun fact(x:Int):Int{ tailrec fun factTail(y:Int, z:Int=1) : Int{ if (x == 0) {return z} else if (x == 1) {return z} else { return factTail(y-1, y*z) } } return factTail(x,1) 

我只是主要调用这个函数:

 fun main(args: Array) { println("5! is ${fact(5)}") } 

我没有得到任何错误,但我也看不出结果。

 if (x == 0) {return z} else if (x == 1) {return z} 

这些检查应该是针对y而不是xx是外部fact函数的参数,并且永远不会改变:)

没有错误或崩溃,因为无限递归调用被优化为无限循环。