java递归求解汉诺塔问题
时间: 2023-06-29 14:18:16 浏览: 139
好的,下面是Java递归求解汉诺塔问题的代码:
```java
public class HanoiTower {
public static void main(String[] args) {
int n = 3; // 汉诺塔的层数
String from = "A"; // 起始柱子
String to = "C"; // 目标柱子
String temp = "B"; // 中间柱子
hanoi(n, from, to, temp);
}
public static void hanoi(int n, String from, String to, String temp) {
if (n == 1) {
System.out.println("将第1个盘子从" + from + "移到" + to);
return;
}
// 将上面 n - 1 个盘子从起始柱子移动到中间柱子
hanoi(n - 1, from, temp, to);
// 将第 n 个盘子从起始柱子移动到目标柱子
System.out.println("将第" + n + "个盘子从" + from + "移到" + to);
// 将上面 n - 1 个盘子从中间柱子移动到目标柱子
hanoi(n - 1, temp, to, from);
}
}
```
在这个例子中,我们定义了一个`hanoi`方法来解决汉诺塔问题。首先,我们检查是否只有一个盘子,如果是,我们直接将它从起始柱子移到目标柱子。否则,我们递归地将上面的n-1个盘子从起始柱子移到中间柱子,将第n个盘子从起始柱子移到目标柱子,最后将上面的n-1个盘子从中间柱子移到目标柱子。
阅读全文