Problème sur fonction récursive simple
Bonjour,
Je suis en train de faire un programme très basique qui cherche à inverser un string de façon récursive...
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| public class test {
private static void inversion (String s, String sInverse, int size) {
if (size > -1) {
sInverse = sInverse + s.charAt(size);
inversion(s, sInverse, --size);
}
}
public static void main (String[] args) {
String sInverse = new String();
inversion(args[0], sInverse, args[0].length() - 1);
System.out.println(sInverse);
}
} |
Le principe est que dans mon main je crée un string qui contiendra le résultat puis j'appelle la fonction inversion en donnant le string a inverser, le string pour le résultat ainsi que la taille-1 du string a inverser. Puis inversion ajoute le char situé en size (le dernier caractère au premier appel) et elle s'appelle elle même en décrémentant size ce qui permettra d'ajouter dans le string de résultat l'avant dernier char.... etc jusqu'à ce qu'on ait traité tous les char (ca s'arrête quand size vaut -1).
Quand je regarde le contenu de sInverse avec le debugger quand size vaut -1, mon string contient bien le bon résultat. Seulement, au retour dans le main, celui ci est vide ... C'est bizarre car je pensais que les variables étaient par référence donc comment expliquer que si a la sortie de inversion mon string est bien rempli, celui ci soit vide au retour dans le main 8O
C'est une question de débutant.
Merci d'avance à tous ceux qui pourront m'aider à résoudre et surtout à comprendre ceci.