public class test_Hanoi {
public static void main(String[] args) {
hanoi(3, 'A', 'B', 'C');
}
/*
n 共有n个盘子
from 开始的柱子
in 中间的柱子
to 目标柱子
无论有多少个盘子,都认为是只有两个盘子:最上面的一个盘子和下面的所有盘子
* */
public static void hanoi(int n, char from, char in, char to) {
//只有一个
if (n == 1) {
System.out.println("从第1个盘子: " + from + " 移到 " + to);
} else {
//移动上面所有的盘子到中间位置
hanoi(n-1, from, to, in);
//移动下面的盘子,
System.out.println("从第" + n + "个盘子: " + from + " 移到 " + to);
//把上面的所有盘子从中间位置移到目标位置
hanoi(n-1,in,from,to);
}
}
}
以3为例子输出:

本文介绍了一个使用递归算法解决汉诺塔问题的Java实现。通过定义一个名为test_Hanoi的公共类,其中包含一个hanoi方法,该方法接收四个参数:盘子数量n,起始柱子from,辅助柱子in和目标柱子to。递归过程分为三步:首先将n-1个盘子从起始柱子移动到辅助柱子,然后将剩余的盘子直接移动到目标柱子,最后再将n-1个盘子从辅助柱子移动到目标柱子。
2371

被折叠的 条评论
为什么被折叠?



