将一个大问题划分为N个小问题,各问题的答案相互独立,知道所有小问题的答案就知道大问题的答案。
举例如汉诺塔问题,每次只能移动一个盘,要把A上的按从大到小往上排列的盘移动到C上,顺序不变:
实现:
public static void hannuoTower(int num,char a,char b,char c) {
if (num==1) {
System.out.println("第"+num+"个盘:"+a+"-->"+c);
}else {
hannuoTower(num-1,a,c,b);
System.out.println("第"+num+"个盘:"+a+"-->"+c);
hannuoTower(num-1,b,a,c);
}
}