0

我在递归解决河内的第三步需要帮助,它说我所有的断言都没有通过,我看过其他人的答案,这和我的一样。我的代码就是Program.assertEqual(hanoi.isSolved("B"),true);他们所说的错误

4

1 回答 1

1

步骤1:

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

};

通过在函数中编写 if 语句,您可以处理 0 个光盘的情况。

第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);
};

现在添加带有参数fromPeg 和sparePeg 的'hanoi.moveDisk()' 函数。

第 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);

这是最简单的一个。您所要做的就是取消注释最后两行代码。

那你就完了!

于 2018-12-26T15:34:56.090 回答