递归算法的经典案例,汉诺塔问题的算法实现,将问题描述为:
思路:
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版权协议,转载请附上原文出处链接和本声明。