汉诺塔问题的java递归实现

import java.util.Scanner;

public class Hanoi {
	int count=0;
	public void hanoi(int n,char A,char B,char C){    //把n个盘子移动到c
		count++;
		if(n==1){
			System.out.println("盘子1从"+A+"移动到"+C);    //再把最下边那个最大的盘子移到目标柱c上
		}
		else{
			hanoi(n-1,A,C,B);   //先把最大的那个盘子上边的n-1个盘子移到空柱子B上
			System.out.println("盘子"+n+"从"+A+"移动到"+C);
			hanoi(n-1,B,A,C);   //最后把n-1个盘子从B移到C  
		}
	}

	public static void main(String[] args) {
		Hanoi h=new Hanoi();
		Scanner sc=new Scanner(System.in);
		int c=sc.nextInt();
		h.hanoi(c,'A','B','C');
		System.out.println(c+"个盘子共需移动"+h.count+"次");
	}

}



posted @ 2013-12-21 22:05  IT专业户  阅读(158)  评论(0编辑  收藏  举报