gpt4 book ai didi

java - 汉诺塔 Java 递归

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:34:02 30 4
gpt4 key购买 nike

大家晚上好

我有一个关于我类正在做的关于递归的家庭作业的快速问题。我们的想法是我们有这个汉诺塔程序,我们需要编写一个 main 来制作一个显示数字 5-25 的表格,以及解决这个大小的塔需要多少步,例如

5 ---- 31 步

6 ---- 63 步

等...

由于 TowersOfHanoi 类设置为打印出每一步,我在执行此操作时遇到了一些麻烦,我认为我们不应该摆脱它,但我不太确定。

这是 TowersOfHanoi 类

public class TowersOfHanoi {
private int totalDisks;
private int count;

public TowersOfHanoi(int disks) {
totalDisks = disks;
count = 0;
}

public void solve() {
moveTower (totalDisks,1,3,2);
}

private void moveTower(int numDisks, int start, int end, int temp) {
if (numDisks ==1) {
moveOneDisk(start,end);
}
else {
moveTower (numDisks-1, start, temp, end);
moveOneDisk (start, end);
moveTower (numDisks-1, temp, end, start);
}
}

private void moveOneDisk(int start, int end) {
count = count+1;
System.out.println("Move one disk from "+start+" to "+end+" - Move "+count);
}
}

现在我只需要编写一个 main 来创建该表,而无需打印出每座塔的每一步,但我不确定如何打印。非常感谢任何帮助

最佳答案

您将需要一个 TowersOfHanoi 类的对象,用于您要解决的每个圆盘。为此,您将通过向它们传递不同的参数(从 5 到 25)在 main 方法中创建这些对象。构建对象后,您只需对其调用 solve 方法即可。

我会把实现留给你,因为这是标记的作业。

关于java - 汉诺塔 Java 递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10328038/

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