Под «Рекурсией на TOH» подразумевается применение рекурсии (техники программирования, при которой функция вызывает саму себя) при решении головоломки Ханойской башни (TOH). Ханойская башня – математическая головоломка, в которой нужно переместить стопку дисков с одного колышка на другой с тем ограничением, что диск большего размера нельзя поставить поверх диска меньшего размера.
Вот один из способов решения головоломки Ханойской башни с помощью рекурсии:
-
Определите рекурсивную функцию, назовем ее «moveTower», которая принимает четыре параметра:
- Количество перемещаемых дисков (n)
- Привязка, где в данный момент расположены диски (источник)
- Привязка, к которой следует переместить диски (пункт назначения)
- Вспомогательная привязка для использования в качестве места временного хранения (вспомогательная)
-
Базовый случай: если n равно 1, переместите диск с исходной привязки на целевую и вернитесь.
-
Рекурсивный случай:
- Переместите n-1 дисков с исходной привязки на вспомогательную, используя целевую привязку в качестве области временного хранения. (На этом этапе функция moveTower используется рекурсивно.)
- Переместите оставшийся диск из исходной привязки в целевую.
- Переместите n-1 дисков со вспомогательной привязки на целевую, используя исходную привязку в качестве области временного хранения. (На этом этапе функция moveTower используется рекурсивно.)
-
Загадку Ханойской башни можно решить, вызвав функцию moveTower с соответствующими параметрами: moveTower(n, источник, назначение, вспомогательный), где n — количество дисков, источник — привязка, где находятся диски. изначально расположены, пункт назначения — это привязка, куда следует переместить диски, а вспомогательный — временная привязка.
Применяя описанный выше рекурсивный метод, можно эффективно решить головоломку Ханойской башни.