gpt4 book ai didi

java - 汉诺塔计划 - 柜台

转载 作者:太空宇宙 更新时间:2023-11-04 13:59:29 25 4
gpt4 key购买 nike

我正在做一个汉诺塔程序 - 有 3 个钉子,第 1 个钉子上有一堆磁盘,按从大到小的顺序排列(最大的在底部,最小的在顶部)。您现在要做的就是将所有磁盘从 peg 1 移动到 peg 3,您可以使用 peg 2 作为其他磁盘的存储空间。到目前为止,我已经正确放置了可以工作的磁盘(每个磁盘都被正确移动),现在我需要按顺序创建一个计数器变量,以显示用户输入的一定数量的磁盘需要移动多少次。例如,3 个圆盘至少需要 7 步。

https://www.mathsisfun.com/games/towerofhanoi.html

你可以看到我注释掉了一些 Moves++,但是无论我在哪里放置计数器,它似乎都不起作用。

public class TowerOfHanoi

{//open class

public void Answer(int numOfDisks, String Peg1, String Peg2, String Peg3, int Moves)
{//open public void Answer

Moves++;

if (numOfDisks == 1)
{//open if

//Moves++;
System.out.println("\nNumber of Moves so far: " + Moves + "\nMove disk on Peg " + Peg1 + " to Peg " + Peg3);

}//close if

else
{//open else

//Moves++;
Answer(numOfDisks - 1, Peg1, Peg3, Peg2, Moves);
System.out.println("\nNumber of Moves so far: " + Moves + "\nMove disk on Peg " + Peg1 + " to Peg " + Peg3);
//Moves++;
Answer(numOfDisks - 1, Peg2, Peg1, Peg3, Moves);

}//close else

}//close public void Answer

public static void main (String[]args)
{//open main

TowerOfHanoi TOH = new TowerOfHanoi();
String numOfDisks = JOptionPane.showInputDialog(null, "Enter a number!");
int NumberOfDisks = Integer.parseInt(numOfDisks);
System.out.println("\nNumber of disks chosen: " + NumberOfDisks);
int Moves = 0;
TOH.Answer(NumberOfDisks, "1", "2", "3", Moves);

}//close main

}//close TowerOfHanoi class

最佳答案

每次移动时增加移动量,即在两个 println 语句的每一个前面,因为它们代表正在进行的一次移动。接下来,您需要从 Answers 方法返回 Moves。将 return Moves 放在方法的末尾。当您调用该方法时,请执行 Moves = Answer(numOfDisks - 1, Peg1, Peg3, Peg2, Moves);

关于java - 汉诺塔计划 - 柜台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29451614/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com