汉诺塔问题-递归算法(JAVA)

递归算法的经典案例,汉诺塔问题的算法实现,将问题描述为:

思路:

1.如果只有1个盘,可直接从a移到c;
2.如果有多个盘
(1)先借助c将num-1个盘从a移动到b
(2)把最下面的盘移动到c
(3)再把b上的num-1个盘看作一个新的汉诺塔问题,借助a移动到c。

public class Hannuo{
	public static void main(String[] args) {
		Tower t = new Tower();
		int n = 3;//盘的个数
		t.move(n,'A','B','C');
		
	}
}
class Tower{
	public void move (int num, char a, char b, char c){
		if (num == 1){//1.如果只有1个盘,可直接从a移到c;
			System.out.println(a + "->" + c);
		}else {//2.如果有多个盘
			move (num-1, a, c, b);//(1)先借助c将num-1个盘从a移动到b
			System.out.println(a + "->" + c);//(2)把最下面的盘移动到c
			move(num-1, b, a, c);//(3)再把b上的num-1个盘,借助a移动到c。
		}
	}
}


版权声明:本文为perliny原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。