У меня есть этот код, который использует рекурсию для получения каждой возможной комбинации символов для любой введенной строки. Но я не понимаю, что происходит, когда программа работает! Может кто-нибудь объяснить, что происходит в этой программе? Я по-прежнему новичок в программировании, поэтому я был бы признателен, если бы ваше объяснение не было слишком сложным, спасибо!Я не понимаю эту рекурсивную программу
public class WordJumble {
public static void main(String[] args) {
String letters = "WORD";
jumbleWords(letters, "");
}
//input parameters
//word - the remaining letters in the word still to jumble
//jumbLet - the letters already used to create the jumbled word
public static void jumbleWords(String word, String jumbLet) {
int pos;
String remainingLetters;
String origWord = word;
String origJumbledLetters = jumbLet;
if (word.length() == 1)
System.out.println(jumbLet + word);
else {
for (pos = 0; pos < origWord.length(); pos++) {
remainingLetters = origWord.substring(0, pos) + origWord.substring(pos + 1, origWord.length());
//recursive call to jumbleWords()
jumbleWords(remainingLetters, origJumbledLetters + origWord.charAt(pos));
}
}
}
}
Выход затем:
WORD
WODR
WROD
WRDO
WDOR
WDRO
OWRD
OWDR
ORWD
ORDW
ODWR
ODRW
RWOD
RWDO
ROWD
RODW
RDWO
RDOW
DWOR
DWRO
DOWR
DORW
DRWO
DROW
Спасибо за вашу помощь!
Используйте ручку и бумагу и сделать всухую с примером. Это самый простой способ понять эту программу. – Prateek
Лучшим способом понять, что происходит, является переход через код, по одной строке за раз, в отладчик IDE. Попробуйте это сначала, а затем задайте конкретный вопрос, когда вы столкнетесь с чем-то, чего не понимаете. –