我在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)
我只是在main中调用此函数:
fun main(args: Array<String>) {
println("5! is ${fact(5)}")
}
我没有收到任何错误,但我也看不到结果。
答案 0 :(得分:3)
if (x == 0) {return z}
else if (x == 1) {return z}
这些检查应该针对y
而不是x
,x
是外部fact
函数的参数,永远不会更改:)
您没有错误或崩溃,因为无限递归调用被优化为无限循环。