Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin 阶乘中的Tailrec_Kotlin_Recursion - Fatal编程技术网

Kotlin 阶乘中的Tailrec

Kotlin 阶乘中的Tailrec,kotlin,recursion,Kotlin,Recursion,这是密码 fun main(args: Array<String>) { val number = 6 val factorial = fact(number) println("Factorial of $number = $factorial") } tailrec fun fact(n: Int, temp: Int = 1): Int { return if (n == 1){ temp } els

这是密码

fun main(args: Array<String>) {
    val number = 6
    val factorial = fact(number)
    println("Factorial of $number = $factorial")
}

tailrec fun fact(n: Int, temp: Int = 1): Int {
    return if (n == 1){
        temp
    } else {
        fact(n-1, temp*n)
    }
}

fun main(args:Array){
val编号=6
val阶乘=事实(数字)
println(“$number的阶乘=$Factorial”)
}
tailrec有趣的事实(n:Int,temp:Int=1):Int{
如果(n==1)返回{
临时雇员
}否则{
事实(n-1,临时*n)
}
}

我看过多个教程,但仍然不了解tailrec的具体功能。

基本上,
tailrec
会使编译器在编译代码时给出错误,如果您的代码的结构不允许编译器在编译时进行尾部递归优化。使用尾部递归,函数使用更少的内存,并且不受堆栈的限制。好的,这是有意义的。我假设您必须将tailrec放在那里才能使用tail递归。有错误。基本上,
tailrec
会使编译器在编译代码时给出一个错误,如果您的代码的结构不允许编译器进行尾部递归优化。使用尾部递归,函数使用更少的内存,并且不受堆栈的限制。好的,这是有意义的。我假设您必须将tailrec放在那里才能使用tail递归。窃听器。