- Java 编程示例
- 示例 - 主页
- 示例 - 环境
- 示例 - 字符串
- 示例 - 数组
- 示例 - 日期和时间
- 示例 - 函数
- 示例 - 文件
- 示例 - 目录
- 示例 - 异常
- 示例 - 数据结构
- 示例 - 集合
- 示例 - 网络
- 示例 - 多线程
- 示例 - 小程序
- 示例 - 简单 GUI
- 示例 - JDBC
- 示例 - 正则表达式
- 示例 - Apache PDF Box
- 示例 - Apache POI PPT
- 示例 - Apache POI Excel
- 示例 - Apache POI Word
- 示例 - OpenCV
- 示例 - Apache Tika
- 示例 - iText
- Java 教程
- Java - 教程
- Java 有用资源
- Java - 快速指南
- Java - 有用资源
如何使用 Java 中用于求解汉诺塔问题的函数
问题描述
如何使用函数求解汉诺塔问题?
解决方案
此示例展示了解决汉诺塔问题的函数的使用方式(适用于 3 个圆盘)。
public class MainClass {
public static void main(String[] args) {
int nDisks = 3;
doTowers(nDisks, 'A', 'B', 'C');
}
public static void doTowers(int topN, char from, char inter, char to) {
if (topN == 1) {
System.out.println("Disk 1 from " + from + " to " + to);
} else {
doTowers(topN - 1, from, to, inter);
System.out.println("Disk " + topN + " from " + from + " to " + to);
doTowers(topN - 1, inter, from, to);
}
}
}
结果
以上代码示例将产生以下结果。
Disk 1 from A to C Disk 2 from A to B Disk 1 from C to B Disk 3 from A to C Disk 1 from B to A Disk 2 from B to C Disk 1 from A to C
以下是汉诺塔的另一个示例
public class TowersOfHanoi {
public static void move(int n, int startPole, int endPole) {
if (n == 0) {
return;
}
int intermediatePole = 6 - startPole - endPole;
move(n-1, startPole, intermediatePole);
System.out.println("Move " +n + " from " + startPole + " to " +endPole);
move(n-1, intermediatePole, endPole);
}
public static void main(String[] args) {
move(5, 1, 3);
}
}
以上代码示例将产生以下结果。
Move 1 from 1 to 3 Move 2 from 1 to 2 Move 1 from 3 to 2 Move 3 from 1 to 3 Move 1 from 2 to 1 Move 2 from 2 to 3 Move 1 from 1 to 3 Move 4 from 1 to 2 Move 1 from 3 to 2 Move 2 from 3 to 1 Move 1 from 2 to 1 Move 3 from 3 to 2 Move 1 from 1 to 3 Move 2 from 1 to 2 Move 1 from 3 to 2 Move 5 from 1 to 3 Move 1 from 2 to 1 Move 2 from 2 to 3 Move 1 from 1 to 3 Move 3 from 2 to 1 Move 1 from 3 to 2 Move 2 from 3 to 1 Move 1 from 2 to 1 Move 4 from 2 to 3 Move 1 from 1 to 3 Move 2 from 1 to 2 Move 1 from 3 to 2 Move 3 from 1 to 3 Move 1 from 2 to 1 Move 2 from 2 to 3 Move 1 from 1 to 3
java_methods.htm
广告