2017-06-11 2 views
1

ich Rekursion in Kotlin bin praktizierende und beschlossen, eine FakultätsfunktionKann nicht faktorielles Ergebnis in tailrec Funktion in Kotlin Rückkehr

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) 

ich einfach Aufruf dieser Funktion in Haupt bin zu erstellen:

fun main(args: Array<String>) { 

println("5! is ${fact(5)}") 

} 

Ich bekomme keine Fehler, aber ich kann das Ergebnis auch nicht sehen.

Antwort

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

Diese Kontrollen sollten statt x gegen y sein, x der Parameter der äußeren fact Funktion ist und sich nie ändert :)

Sie keine Fehler oder Abstürze, weil die unendlichen rekursiven Aufrufe zu einer optimierten erhalten Endlosschleife.

Verwandte Themen