用Java写一个汉诺塔
时间: 2024-06-06 15:08:23 浏览: 165
public class HanoiTower {
public static void main(String[] args) {
int n = 3; // 汉诺塔的层数
char A = 'A'; // 起始的柱子
char B = 'B'; // 辅助的柱子
char C = 'C'; // 目标柱子
hanoi(n, A, B, C);
}
/**
* @param n 汉诺塔的层数
* @param A 起始的柱子
* @param B 辅助的柱子
* @param C 目标柱子
*/
public static void hanoi(int n, char A, char B, char C) {
if (n == 1) {
System.out.println("将第1个盘子从" + A + "移动到" + C);
} else {
hanoi(n - 1, A, C, B);
System.out.println("将第" + n + "个盘子从" + A + "移动到" + C);
hanoi(n - 1, B, A, C);
}
}
}
相关问题
用Java写一个汉诺塔小程序
好的,以下是用Java语言编写的汉诺塔小程序:
```java
import java.util.Scanner;
public class HanoiTower {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("请输入汉诺塔的层数:");
int n = input.nextInt();
hanoi(n, 'A', 'B', 'C');
}
public static void move(char x, char y) {
System.out.println(x + " --> " + y);
}
public static void hanoi(int n, char a, char b, char c) {
if (n == 1) {
move(a, c);
} else {
hanoi(n - 1, a, c, b);
move(a, c);
hanoi(n - 1, b, a, c);
}
}
}
```
程序实现了汉诺塔的递归算法,其中的 `move` 方法用来输出每次移动的过程,`hanoi` 方法用来递归求解汉诺塔问题。在程序中输入汉诺塔的层数,即可输出完整的汉诺塔移动过程。
用Java写一个汉诺塔(用方法递归方式)
```
public class HanoiTower {
public static void main(String[] args) {
int n = 3; // 汉诺塔的层数
char A = 'A', B = 'B', C = 'C'; // 汉诺塔的三个柱子
move(n, A, B, C);
}
public static void move(int n, char A, char B, char C) {
if (n == 1) {
System.out.println("将第" + n + "个盘子从" + A + "移动到" + C);
} else {
move(n - 1, A, C, B); // 将前n-1个盘子从A移动到B
System.out.println("将第" + n + "个盘子从" + A + "移动到" + C);
move(n - 1, B, A, C); // 将前n-1个盘子从B移动到C
}
}
}
```
说明:
汉诺塔问题可以抽象成将n个盘子从A柱移动到C柱的问题,其中可以借助第二个柱子B。
当n=1时,直接将盘子从A移动到C;
当n>1时,先将前n-1个盘子从A移动到B,然后将第n个盘子从A移动到C,最后将前n-1个盘子从B移动到C。
用递归的思想,相当于将大问题分解成了小问题。
阅读全文