递归实现汉诺塔

/**
 * 汉诺塔
 * n = 1时,a->c
 * n = 2时,a->b,a->c,b->c
 * n大于2时,将n分为n和n-1,第一步是将n-1从a移动到b,第二部将n从a移动到c,第三部将n-1从b移动到c
 * 需要移动2的n次方-1次
 */
private void hanoi(int n,String a,String b,String c){
    if(n==1){
        //直接将盘子从a移动到c
        Log.i("hannio",a+ "->"+ c);
    }else {
        //将n上面的n-1个盘子从a移动到b
        hanoi(n-1,a,c,b);
        //将第n个盘子移动到c
        Log.i("hannio",a+ "->"+ c);
        //将n-1个盘子从b移动到c
        hanoi(n-1,b,a,c);
    }
}

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