Ich versuche, über gute Praktiken in der Programmierung zu lernen, und ich bin mit dieser Frage festgefahren. Ich weiß, dass rekursive Funktionen in Java (manchmal) "ein Schmerz im Arsch" sein können, und ich versuche, so viel wie möglich die Endversion dieser Funktion zu implementieren. Ist es das wert, sich damit zu befassen, oder sollte ich das auf altmodische Weise machen? Gibt es einen Unterschied zwischen diesen beiden Funktionen (in Kotlin):Bei der Verwendung von Java/Kotlin für die Programmierung wird empfohlen, Tail-Rekursion oder die Iterative Version zu verwenden? Gibt es einen Unterschied in der Leistung?
tailrec fun tail_fibonacci(n : BigInteger, fib1 : BigInteger = BigInteger.ZERO , fib2 : BigInteger = BigInteger.ONE) :
BigInteger {
return when(n){
BigInteger.ZERO -> fib1
else -> tail_fibonacci(n.minus(BigInteger.ONE),fib1.plus(fib2),fib1)
}
}
fun iterative_fibonacci(n: BigInteger) : BigInteger {
var count : BigInteger = BigInteger.ONE
var a : BigInteger = BigInteger.ZERO
var b : BigInteger = BigInteger.ONE
var c : BigInteger
while(count < n){
count += BigInteger.ONE
c = a + b
a = b
b = c
}
return b
}