分治算法在每一层递归上都有三个步骤:
思路:
package dac;
public class Hanoitower {
public static void main(String[] args) {
hanoiTower(3, ‘A‘,‘B‘,‘C‘);
}
public static void hanoiTower(int num, char a, char b, char c){
// 如果只有一个盘
if (num == 1){
System.out.println("第1个盘" + a + "->" + c);
} else {
// 如果我们有 n (n >= 2 ) 的情况:
// 1. 先把最上面的所有盘A-B,移动过程会使用 c
hanoiTower(num - 1, a ,c, b);
// 2. 把最下面的盘 A -> C
System.out.println("第" + num + "个盘" + a + "->" + c);
// 3. 把B塔的所有盘 从 B -> C
hanoiTower(num - 1, b, a, c);
}
}
}
原文:https://www.cnblogs.com/sharpenblogs/p/15156396.html