Рекурсивный метод решения головоломки Ханойской башни

Под «Рекурсией на TOH» подразумевается применение рекурсии (техники программирования, при которой функция вызывает саму себя) при решении головоломки Ханойской башни (TOH). Ханойская башня – математическая головоломка, в которой нужно переместить стопку дисков с одного колышка на другой с тем ограничением, что диск большего размера нельзя поставить поверх диска меньшего размера.

Вот один из способов решения головоломки Ханойской башни с помощью рекурсии:

  1. Определите рекурсивную функцию, назовем ее «moveTower», которая принимает четыре параметра:

    • Количество перемещаемых дисков (n)
    • Привязка, где в данный момент расположены диски (источник)
    • Привязка, к которой следует переместить диски (пункт назначения)
    • Вспомогательная привязка для использования в качестве места временного хранения (вспомогательная)
  2. Базовый случай: если n равно 1, переместите диск с исходной привязки на целевую и вернитесь.

  3. Рекурсивный случай:

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

Применяя описанный выше рекурсивный метод, можно эффективно решить головоломку Ханойской башни.