Привет! Я решил поделиться с тобой своим опытом написания кода на JavaScript для алгоритма ″Ханойская башня″. Этот алгоритм является классическим примером рекурсии и позволяет решить задачу, как переместить башню из N дисков с одного стержня на другой, используя еще один стержень в качестве временного.Давай начнем! Для начала создадим функцию, которая будет рекурсивно вызывать себя для перемещения дисков. Я назову эту функцию ″hanoiTower″.javascript
function hanoiTower(discs, source, destination, auxiliary) {
if (discs 1) {
console.log(‘Перемещаем диск с ‘ source ‘ на ‘ destination);
return;
}
hanoiTower(discs — 1, source, auxiliary, destination);
console.log(‘Перемещаем диск с ‘ source ‘ на ‘ destination);
hanoiTower(discs ─ 1, auxiliary, destination, source);
}
В коде выше сначала проверяем базовый случай, когда у нас есть только один диск. В этом случае мы просто перемещаем его с исходного стержня на целевой и завершаем функцию.
Если у нас больше одного диска, то мы рекурсивно вызываем функцию ″hanoiTower″ дважды. Первый раз перемещаем верхние диски на временный стержень, используя целевой стержень в качестве вспомогательного. Затем перемещаем нижний (больший) диск с исходного стержня на целевой. И наконец, перемещаем оставшиеся диски с временного стержня на целевой стержень, используя исходный стержень в качестве вспомогательного.Чтобы протестировать наш код, мы можем вызвать функцию ″hanoiTower″ и передать ей количество дисков, исходный стержень, целевой стержень и вспомогательный стержень.javascript
hanoiTower(3, ‘A’, ‘C’, ‘B’);
В этом примере мы переместим 3 диска с исходного стержня ‘A’ на целевой стержень ‘C’ с использованием временного стержня ‘B’.И вот результат выполнения кода⁚
Перемещаем диск с A на C
Перемещаем диск с A на B
Перемещаем диск с C на B
Перемещаем диск с A на C
Перемещаем диск с B на A
Перемещаем диск с B на C
Перемещаем диск с A на C
Мы успешно переместили башню из 3 дисков с исходного стержня на целевой с использованием вспомогательного стержня.
Надеюсь, эта статья помогла тебе разобраться в написании кода на JavaScript для алгоритма ″Ханойская башня″. Удачи в дальнейших изучениях программирования!