在递归解决河内的第三步中,我需要帮助,它说我的所有主张都没有通过,我看了其他人的回答,这和我的一样。我的代码是Program.assertEqual(hanoi.isSolved("B"),true);
,这就是他们所说的错误
答案 0 :(得分:0)
步骤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);
这是最简单的一个。您要做的就是取消注释最后两行代码。
那您就完蛋了!