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