经典递归问题学习之汉诺塔(河内塔)

 

package recursionDG;

public class HanNoTa {
    private int cont=1;
    public void hannota(int n,char from,char helper,char to){
        if (n==1){
            move(1,from,to);
        }else{
            hannota(n-1,from,to,helper);//第一步,现将n-1个盘子从A利用C到B
            move(n,from,to);// 将n盘子从 a挪到c
            hannota(n-1,helper,from,to);//在将n-1个盘子从b利于a挪到c
        }
    }
    public void move(int n,char from,char to){
        cont++;
        System.out.println("第"+cont+"步,从"+from+"------>"+to);
    }

    public static void main(String[] args) {
        HanNoTa a=new HanNoTa();
        a.hannota(3,'A','B','C');
    }
}

 

你可能感兴趣的:(算法学习(java))