Bonsoir,
J'ai un problème d'algo concernant une fonction capable de retourner le code binaire d'un niveau n.
Le prototype :
Code :
- public static String showBits(int n [, String s]);
|
L'argument s est optionel, mais le prof' nous a dit qu'on allait en avoir besoin..
Code :
- n=1: 0\n1\n
- n=2: 00\n01\n\10\n11\n
- etc.
|
Personnellement, j'ai écrit cette fonction itérative/récursive, mais qui ne fonctionne pas tout à fait correctement, ne marche que pour les niveaux 1, 2, et 3, sans passer de ligne après chaque ligne..
Code :
- public static String showBits(int n) {
- if (n == 1) return "0\n1\n";
- String s = new String();
- for (int i=0; i<Math.pow(2, n-1); i++) {
- String lg = new String();
- for (int j=0; j<n-1; j++) lg += showBits(n-1).charAt(j+2*i);
- s += "0" + lg;
- }
- for (int i=0; i<Math.pow(2, n-1); i++) {
- String lg = new String();
- for (int j=0; j<n-1; j++) lg += showBits(n-1).charAt(j+2*i);
- s += "1" + lg;
- }
- return s;
- }
- Appel avec n=2: 00011011
- Appel avec n=3: 000001010011100101110111
|
Evidemment, il y a des contraintes. Il ne faut pas sauvegarder le nombre n original extérieurement à la fonction, pas de variables static, pas de méthodes complexes, et il faut bien sûr que ça soit récursif !
Voilà, si quelqu'un pouvait m'aider un peu..
Merci.
Message édité par LajioT le 14-01-2004 à 23:04:13