Я получил код из этого вопроса, я запустил его в Eclipse, и код был в порядке, но я запутался в том, как внутренний порядок рекурсии проходит.
public class Permute {
public static void main(String[] args) throws IOException {
System.out.println("Enter a string");
BufferedReader bufReader = new BufferedReader(new InputStreamReader(
System.in));
String text = bufReader.readLine();
shuffle("", text);
}
public static void shuffle(String dummy, String input) {
if (input.length() <= 1)
System.out.println(dummy + input);
else {
for (int i = 0; i < input.length(); i++) {
input = input.substring(i, i + 1) + input.substring(0, i)
+ input.substring(i + 1);
shuffle(dummy + input.substring(0, 1), input.substring(1));
}
}
}
}
Я обнаружил трудности в понимании рекурсии в цикле for
в Shuffle
. Какие-нибудь указатели в декодировании шагов рекурсии?
РЕДАКТИРОВАТЬ : Хорошо, это мое понимание, скажем, предположим, что мой ввод ABC, и когда я бегу в первом цикле, я получаю пустышку = A и вход = BC, так что ближайший шаг будет идти вниз по рекурсии для input = BC и dummy = A, а затем вернитесь, чтобы повторить i для начального ввода?