递归--汉诺塔

汉诺塔问题,需要考虑两步,第一步把(盘子数-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 }

 

posted @ 2016-03-04 10:24  凌晨五点半  阅读(126)  评论(0编辑  收藏  举报