J'essaie de connaître les bonnes pratiques en programmation et je suis coincé avec cette question. Je sais qu'en Java, les fonctions récursives peuvent être (parfois) une douleur dans le cul, et j'essaie d'implémenter autant que possible la version queue de cette fonction. Cela vaut-il la peine de le faire ou devrais-je le faire à l'ancienne? Est-il une différence entre ces deux fonctions (en Kotlin):Lors de l'utilisation de Java/Kotlin pour la programmation est recommandé d'utiliser Tail récursion ou la version itérative? Y a-t-il une différence de performance?
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
}