2.16 汉诺塔问题
游戏规则
代码实现
TestHanoi.java
package main.java.com.LiKou.recursive;
public class TestHanoi {
public static void main(String[] args) {
hanoi(3, 'A', 'B', 'C');
}
/**
* 共有n个盘子
* @param n
* @param from
* @param in
* @param 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);
}
}
}