я найти код, но я не понимаю, рекурсии ЧастьВсе перестановки слов в строке Java
public static void main (String args[]) {
System.out.println("Please enter the string whose permutations we need to show ");
Scanner in = new Scanner(System.in);
String original=in.nextLine();
System.out.println("Results are :");
permute(original);
}
public static void permute(String input) {
int inputLength = input.length();
boolean[ ] used = new boolean[ inputLength ];
StringBuffer outputString = new StringBuffer();
char[ ] in = input.toCharArray();
doPermute (in, outputString, used, inputLength, 0);
}
public static void doPermute (char[ ] in, StringBuffer outputString,
boolean[ ] used, int inputLength, int level) {
if(level == inputLength) {
System.out.println (outputString.toString());
return;
}
for(int i = 0; i < inputLength; i++) {
if(used[i]) continue;
outputString.append(in[i]);
used[i] = true;
doPermute(in, outputString, used, inputLength, level + 1);
used[i] = false;
outputString.setLength( outputString.length() - 1);
}
}
}
вход:
ABC
ВЫВОД:
ABC ACB BAC BCA CAB CBA
так, в чем ваш вопрос? – Mysterion
'doPermute' является рекурсивной функцией. –
Я не понимаю, как doPermute() работает после печати ABC и используется [2] = false, i = 2, ouputtstring = "AB" с приращением цикла, он должен выйти из цикла как i = 3. –