Я столкнулся с несколькими из этих проблем и никогда не знал, как лучше всего с ними справиться. Если я пишу рекурсивную функцию и создаю ответ, но обнаруживаю, что текущий ответ не работает, что я возвращаю.
Например, если ответ должен быть ArrayList, я не могу вернуть false, чтобы сказать, что это не работает. - Должен ли я возвращать дозорное значение, такое как null или -1, и проверять его в рекурсивном вызове? - Или функция должна просто возвращать void, и я добавляю переменную вне функции только в том случае, если я решу, что есть ответ - Или я должен сохранить дополнительный параметр, который содержит значение, и просто игнорировать его, если он не работает (я я не уверен, как это сделать в моем текущем примере) - Или я должен сначала иметь функцию, которая проверяет, работает ли она, а затем выполняет действие
Вопрос, который я сейчас пытаюсь выяснить, похож на вычисление всех перестановок в строке. Разница в том, что перестановки с двумя последовательными в перестановке символами не могут быть последовательными в алфавите и в одном и том же порядке. Например, "bc" не допускается. "кб" нормально. Не уверен, что это хороший пример для моего вопроса, но если нет, мой вопрос остается в силе, потому что мне всегда неудобно иметь дело с рекурсией с возвратом.