Хан Академия башни Ханой рекурсия Шаг 3 - PullRequest
0 голосов
/ 23 ноября 2018

Мне нужна помощь на третьем шаге рекурсивного решения Ханоя, и он говорит, что все мои утверждения не проходят, и я посмотрел на ответ других людей, и он такой же, как мой.Мой код Program.assertEqual(hanoi.isSolved("B"),true); это то, что они говорят, неправильно

1 Ответ

0 голосов
/ 26 декабря 2018

Шаг 1:

var solveHanoi = function(numDisks, fromPeg, toPeg) {
if (numDisks===0){
return;
}
// recursive case:

};

Для случая с 0 дисками вы должны написать оператор if в функции.

Шаг 2:

var solveHanoi = function(numDisks, fromPeg, toPeg) {
if (numDisks===0){
return;
}
// recursive case:
var sparePeg = hanoi.getSparePeg(fromPeg, toPeg);
solveHanoi(numDisks-1, fromPeg, sparePeg);
};

Теперь создайте переменную под названием «sparePeg», затем напишите в функции «solveHanoi» 3 параметра, как показано выше:

Шаг 3:

var solveHanoi = function(numDisks, fromPeg, toPeg) {
if (numDisks===0){
return;
}
// recursive case:
var sparePeg = hanoi.getSparePeg(fromPeg, toPeg);
hanoi.moveDisk(fromPeg, toPeg);
solveHanoi(numDisks-1, fromPeg, sparePeg);
};

Теперь добавьте «hanoi.moveDisk () 'с параметрами fromPeg и sparePeg.

Шаг 4 и 5:

var solveHanoi = function(numDisks, fromPeg, toPeg) {
if (numDisks===0){
return;
}
// recursive case:

else{
var sparePeg = hanoi.getSparePeg(fromPeg, toPeg);
solveHanoi(numDisks-1, fromPeg, sparePeg);
hanoi.moveDisk(fromPeg, toPeg);
solveHanoi(numDisks-1, sparePeg, toPeg);
} 
};
solveHanoi(5, "A", "B");
Program.assertEqual(hanoi.isSolved("B"),true);

Это самый простой способ.Все, что вам нужно сделать, это раскомментировать последние 2 строки кода.

Тогда вы закончили!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...