一、 分治算法的基本步骤
分治算法在每一层递归上都有三个步骤
1.分解:将原问题分解为若干个规模较小,相互独立,与原问题形式相同的子问题。
2.解决:若子问题规模较小而容易被解决则直接解决,否则递归的解各个自问题。
3.合并:将各个子问题的解合并为原问题的解。
二、汉诺塔游戏的思路分析
1.如果只有一个盘,A->C
2.如果有n>=2,总是可以看作两个半盘,一个是最下面的盘,另一个是上面的盘。
1)先把最上面的盘A->B
2)把最下面的盘A->C
3)把B塔的所有盘从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>=2情况,我们总是可以看做是两个盘1.最下边的一个盘 2.上边的所有盘
// 1.先把最上面所有的盘A->B 移动过程中会利用到c
hanoiTower(num- 1, a, c, b);
// 2.把下边的盘A->C
System.out.println("第"+num+"个盘从 "+a+"->"+c);
// 3.把B塔的所有盘移动到C 移动过程中使用到a
hanoiTower(num-1, b, a, c);
}
}