Bonjour,
Il me semblait qu'on pouvait indiquer à java d'optimiser le récursif terminal, un peu comme avec gcc.
Quelqu'un connait-il ma méthode à suivre ?
titi
Bonjour,
Il me semblait qu'on pouvait indiquer à java d'optimiser le récursif terminal, un peu comme avec gcc.
Quelqu'un connait-il ma méthode à suivre ?
titi
Thierry Leriche-Dessirier
Consultant Java JEE Web Agile freelance
Rédacteur pour Developpez
Professeur de Génie Logiciel à l'ESIEA
Site : http://www.icauda.com / Linked'in : http://www.linkedin.com/in/thierryler / Twitter : @ThierryLeriche
Salut,
Pas à ma connaissance non.
Par contre, Scala, un langage qui tourne sur le JVM la supporte lui.
Bonsoir,
java supporte l'optimisation (transformation de la récursion en une boucle) des récusions terminales, mais pas au niveau du compilateur. En effet, a cause de l'héritage il est impossible de faire ça a la compilation (dans les mérhodes non privé, l'appel récursif peut passer par un enfant, le compilateur a aucune chance de déterminer ça).
Teste ce code avec différentes jvm et tu saura quoi. D'après mes lectures, la jvm de sun n'optimise pas (StakOverflow, http://bugs.sun.com/bugdatabase/view...bug_id=4726340) alors que les jvm de ibm optimisent (pas pu tester, elles sont payantes)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 public class TailRecursionTest { private static int loop(int i) { return loop(i); } public static void main(String[] args) { loop(0); } }
Partager