汉诺塔问题java代码
时间: 2023-11-19 20:57:06 浏览: 114
下面是汉诺塔问题的Java代码实现:
```
import java.util.Scanner;
public class HanoiTower {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt();
HanoiTower hanoi = new HanoiTower();
hanoi.move(num, 'A', 'B', 'C');
}
public void move(int num, char a, char b, char c) {
if (num == 1) {
System.out.println(a + "->" + c);
} else {
move(num - 1, a, c, b);
System.out.println(a + "->" + c);
move(num - 1, b, a, c);
}
}
}
```
代码解析:
1. 首先通过Scanner类获取用户输入的盘子数目。
2. 创建一个HanoiTower对象,调用move方法。
3. move方法是递归实现的,当只有一个盘子时,直接将其从a柱移动到c柱;当有多个盘子时,先将上面的n-1个盘子从a柱移动到b柱,再将最下面的一个盘子从a柱移动到c柱,最后将b柱上的n-1个盘子移动到c柱。
阅读全文