Я ПОКА не могу этого сделать, это был я, когда столкнулся с вызовом Ханойской башни. Но с помощью Javascript Assignment и Recursively мне удалось.

Что такое Ханойская башня?

Это просто задача, в которой вам нужно переместить диск с первого стержня на последний.

Как решить Ханойскую башню одним диском?

Просто переместите его с первого стержня на последний стержень.

Как решить Ханойскую башню с двумя дисками?

Звучит легко, верно? Извините, что прерываю ваш мыслительный процесс. Но нужно соблюдать некоторые правила

  1. Перемещайте только один диск за раз.
  2. Диск большего размера не может быть помещен поверх диска меньшего размера.
  3. Все диски, кроме перемещаемого, должны быть на шпильке

Таким образом, нашим идеальным ответом было бы

Теперь у каждого решателя проблем должны быть рассуждения, логика и, в нашем случае, псевдокод. Теперь изображение объясняет нашу логику после рассуждений, поэтому давайте набросаем простой псевдокод.

  1. определите свою функцию (решить ханойскую башню)
  2. передать два аргумента (начало и цель, представляющие первую привязку и последнюю)
  3. объявить переменную для промежуточного хранения
  4. объявить переменную для хранения шагов
  5. заполнить шаги в переменной для хранения шагов
  6. Вернуть значение, содержащее шаги
  7. закрыть функцию
  8. вызвать функцию со значениями

Веселая часть

// Declare our function
function solveHanoi(firstpeg, lastpeg){
  // determine intermediate by using an outside function
  const intermediate = determineIntermediate(firstpeg, lastpeg);
  // DECLARE A VARIABLE TO STORE OUR ANSWER
  const answer;
  // according to the image above we move the top disc to the intermediate
  answer = output(firstpeg, intermediate);
  // then move remaining disc to last peg
  answer += output(firstpeg, lastpeg);
  // then move intermediate peg to last peg 
  answer += output(intermediate, lastpeg);

  return answer;
}
// function to diplay our steps
function output(a, b){
// always remember we used back ticks
  return `${a}->${b}`; // back ticks in use also called template literals
}

// function to determine middle peg
function determineIntermediate(firstpeg, lastpeg){
  // declare a variable to store middle peg
  let middlepeg;
  // we know we have three pegs we anotate them by having an array of [1, 2, 3]
  let anotation =  [1, 2, 3];
  // filter a value which is not the first peg nor the last peg
  // thats how we determine our middle peg
  
  middlepeg = anotation.filter((value) => value !== firstpeg && value !== lastpeg);
  
  return middlepeg;

}

так что это решает два диска, а как насчет трех дисков, четырех дисков или пяти дисков?

Рекурсивный

Слышали о русских куклах? если не открыть новую вкладку и выполнить быстрый поиск, то вернуться.

Рекурсивный в самом простом из слов относится к повторяющемуся процессу, выходные данные которого на каждом этапе применяются в качестве входных данных на последующем этапе.

Мы используем рекурсию, чтобы решить ее быстрее.

Как же так?

Веселая часть

// function to solve the recurssion
function towerOfHanoi(numberofdiscs){
  // We pass on number of discs but again we must have three pegs so?
  // declare another function to do the recursion
  const recurse = doRecursion(numberofdiscs, 1, 2, 3);

  return recurse;
}
// we will now initaite the function but with different representation of arguments
function doRecursion(n, firstpeg, intermediate, lastpeg){
  // Define base case
  // Define result where to store result
  if(n === 0){
    return;
  }
  // recursive case
  // move the disc recursively from first peg to intermediate through lastpeg
  doRecursion(n-1, firstpeg, lastpeg, intermediate);
  // display the answer
  console.log(`${firstpeg}->${lastpeg}`);
  
  // Move disc recursively from intermediate peg to last peg
  doRecursion(n-1, intermediate, firstpeg, lastpeg);
}

// call the function with steps
towerOfHanoi(4);

и вуаля 💻

Резюме

что такое Ханойская башня?

Как вы решаете это с одним диском?

Как решить рекурсивно?

Надеюсь, что это был полезный комментарий к большему количеству алгоритмов для решения. И как улучшить мою.