Отступление является формой рекурсии. Но это предполагает выбор только одного варианта из любых возможностей. Мы начинаем с выбора варианта и возвращаемся от него, если мы достигаем состояния, в котором мы заключаем, что этот конкретный вариант не дает требуемого решения. Мы повторяем эти шаги, просматривая каждую доступную опцию, пока не получим желаемое решение.
Ниже приведен пример поиска всех возможных порядков расположения данного набора букв. Когда мы выбираем пару, мы применяем возврат, чтобы проверить, была ли эта точная пара уже создана или нет. Если пара еще не создана, она добавляется в список ответов, иначе она игнорируется.
def permute(list, s): if list == 1: return s else: return [ y + x for y in permute(1, s) for x in permute(list - 1, s) ] print(permute(1, ["a","b","c"])) print(permute(2, ["a","b","c"]))
Когда приведенный выше код выполняется, он дает следующий результат —