无法在Kotlin中返回基于后跟函数的阶乘结果

时间:2017-06-11 08:41:16

标签: kotlin

我在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)}")

}

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

1 个答案:

答案 0 :(得分:3)

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

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

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