Я смотрю программу перестановок, написанную here. Код выглядит следующим образом:Как рекурсия работает в перестановке?
public static void main(String[] args) {
permutation("", "CAT");
}
private static void permutation(String prefix, String str) {
int n = str.length();
if (n == 0) {
System.out.println(prefix);
} else {
for (int i = 0; i < n; i++) {
permutation(prefix + str.charAt(i), str.substring(0, i) + str.substring(i + 1));
}
}
}
за слово CAT, я получаю следующий результат:
CAT
CTA
ACT
ATC
TCA
TAC
Я могу проследить через шаги рекурсии и понять, как это работает, чтобы получить CAT и CTA, но я не вижу, как это продолжается. После n == 0 (это базовый случай) все должно прекратиться (что произойдет после того, как мы получим CTA).
Другие источники:
Я прочитал объяснение here, но я все еще возникают проблемы с пониманием, как он продолжает идти. Я чувствую, что понимаю концепцию рекурсии. Я могу использовать его вслепую, но я хочу понять, КАК он работает здесь.
Существует еще одна версия перестановочной рекурсии here, но это использование backtracking, и я понимаю, что это немного лучше. Это рекурсивный хвост, который я не понимаю.
Вопрос:
Может кто-то пожалуйста, объясните, как рекурсия работает так, что мы заканчиваем СТО в приведенном выше примере? Это не домашнее задание. Я просто смотрю в разные программы и работаю через некоторых мастеров-мастеров.
Спасибо!
Спасибо за такое ясное и полное объяснение! – JustBlossom