递归--汉诺塔

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

 

你可能感兴趣的:(递归--汉诺塔)