Java实现,在A上有按大小排序好的n个金碟,借助B的帮助,将A上的碟子移动到C上,在移动的过程中要严格按照大小顺序,不能将碟子放在比它小的上面,输出结果
时间: 2024-05-06 14:21:38 浏览: 149
好的,您的问题是关于经典的汉诺塔问题。以下是 Java 实现代码:
```
public class HanoiTower {
public static void move(int n, char from, char to, char aux) {
if (n == 1) {
System.out.println("Move disk 1 from " + from + " to " + to);
} else {
move(n-1, from, aux, to);
System.out.println("Move disk " + n + " from " + from + " to " + to);
move(n-1, aux, to, from);
}
}
public static void main(String[] args) {
int n = 3; // 可以修改 n 的值来测试不同的盘数
move(n, 'A', 'C', 'B');
}
}
```
在这个代码中,输入参数 n 代表盘子的数量,字符 A,B,C 分别代表三个金碟,原理是使用递归算法,将 n 个盘子从 A 搬到 C,并借助辅助塔 B 。
在函数中,首先判断如果只有一个盘子,则直接将它从 from 移到 to。如果不止一个盘子,则先将 n - 1 个盘子从 A 移到 C(借助 B),然后将最大的盘子从 A 移到 B,最后再将 n - 1 个盘子从 C 移到 B(借助 A)。在移动的过程中,严格遵循大小顺序,确保没有比当前盘子更小的盘子被放置在它的上面。
对于 3 个盘子的情况,这个程序将会输出以下结果:
```
Move disk 1 from A to C
Move disk 2 from A to B
Move disk 1 from C to B
Move disk 3 from A to C
Move disk 1 from B to A
Move disk 2 from B to C
Move disk 1 from A to C
```
阅读全文