本帖最后由 黑马刘涛 于 2012-7-16 18:07 编辑
- class HanoiDemo
- {
- public static void main(String[] args)
- {
- Hanoi h = new Hanoi();
- h.hanoi(5,'A','B','C');
- }
- }
- class Hanoi
- {
- private static int count = 0;//计数器
- //将塔座a上按直径由小到大且自上而下编号为1到n的n个
- //圆盘搬到塔座c上,b可用于辅助塔座
- public void hanoi(int n,char a,char b,char c)
- {
- if(n == 1)
- move(a,1,c);//将编号为1的圆盘从塔座a搬到塔座c上
- else
- {
- //将塔座a上编号为1到n-1的圆盘搬到塔座b,c作为辅助塔
- hanoi(n-1,a,c,b);
- //将塔座a上编号为n的圆盘搬到塔座c上
- move(a,n,c);
- //将塔座b上编号为1到n-1的圆盘搬到塔座c上,a作为辅助塔
- hanoi(n-1,b,a,c);
- }
- }
- //搬动操作
- public void move(char a,int n,char c)
- {
- System.out.println("第"+(count++)+"次搬运:"+"将塔座"+a+"上的圆盘"+n+"搬到塔座"+c);
- }
- }
复制代码 数据结构课程中关于栈降到的递归问题 |