递归--汉诺塔
汉诺塔问题,需要考虑两步,第一步把(盘子数-1)个移到第二个盘子上,然后把最底下盘子移到最后上,再把第二个上的移到第三个上。
1 public class hanoiTower { 2 3 /** 4 * 5 * @Description: 移动盘子 6 * topN:移动的盘子数 7 * form:起始位置 8 * inter:中间位置 9 * to:目标位置 10 * @author dongye 11 * @date 2016年3月4日 上午10:01:41 12 */ 13 public static void doTower(int topN,char from,char inter,char to){ 14 if(topN==1){//只有一个 15 System.out.println("盘子1,从"+from+"位置到"+to+"位置"); 16 }else{ 17 doTower(topN-1,from,to,inter); 18 System.out.println("盘子"+topN+",从"+from+"位置到"+to+"位置"); 19 doTower(topN-1,inter,from,to); 20 } 21 } 22 }