Bonjour,
Je suis en train de faire un programme très basique qui cherche à inverser un string de façon récursive...
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).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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); } }
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
C'est une question de débutant.
Merci d'avance à tous ceux qui pourront m'aider à résoudre et surtout à comprendre ceci.
Partager