Je suis actuellement en train de travailler sur des problèmes de récursion, et je suis actuellement bloqué sur un.
Le problème consiste à insérer récursivement des espaces dans une chaîne de caractères, à tous les endroits possibles, de sorte que la sortie ressemble à quelque chose comme.. :
Input: ABCD
Out:
ABCD
A BCD
A B CD
A B C D
A BC D
AB CD
AB C D
ABC D
J'ai actuellement travaillé sur le problème, et je suis arrivé à un point semblable :
Input: ABCD
Out:
ABCD
A BCD
A B CD
A B C D
Mon code pour le problème jusqu'à présent :
import java.util.Scanner;
public class Words
{
static int counter = 0;
static String fString = "";
static String fString2 = "";
static String previous = "";
static String input = "";
static String other = "";
public static String segment(String inputPrefix, String restOfString)
{
if(restOfString.length() != 0)
{
if(inputPrefix.equals(""))
{
fString += restOfString + "\n";
segment(restOfString.substring(0,1), restOfString.substring(1));
}
else
{
previous += inputPrefix + " ";
fString += previous + restOfString + "\n";
fString2 = previous + restOfString;
segment(restOfString.substring(0,1)
, restOfString.substring(1));
}
}
/*else
{
counter++;
other = fString2.replaceAll(" ", "");
System.out.println(other);
if((counter + 1) < other.length())
{
System.out.println("Other: " + other);
input = other.substring(0, counter + 1);
other = other.substring(counter + 1);
System.out.println(counter);
System.out.println("input: " + input);
System.out.print("other: " + other);
segment(input, other);
}
else
return fString;
}*/
return fString;
}
public static void main (String[] args)
{
Scanner scan = new Scanner(System.in);
System.out.print("Enter a string: ");
String input = scan.next();
System.out.println();
System.out.println(segment("", input));
}
}
La deuxième clause else est celle qui me pose le plus de problèmes, car chaque fois que je l'exécute sans la compléter, elle se transforme en une boucle infinie. J'ai même mis des instructions int trace (les println
) et cela n'aide toujours pas.
Je l'ai lu plusieurs fois et je ne comprends pas pourquoi cela ne fonctionne pas.