核心思想:前n个要从起点到终点,那要先把前n-1个移到第三点,然后第n个点移到终点,最后前n-1个点从第三点移到终点。(我在a要去c,先把我前面的都移到b,然后我去a,最后n-1个再来c)
例如:第n个要a→c:先让前n-1个都a→b,然后第n个再a→c,最后前n-1个再b→c。 其中前n-1个要a→b:让前n-2个都a→c,第n-1个a→b,前n-2再c→b,以此直到前面只有一个盘子则直接移动再返回。
//移盘子
//第n个在a要去c,先让前n-1个都去b,然后第n个再去a,最后前n-1个再来c
//我在a要去c,先把我前面的都移到b,然后我去a,最后n-1个再来c
public class Hanoi {
public static void main(String[] args) {
String x = "x";
String y = "y";
String z = "z";
hanoi(3, x, y, z);
}
private static void hanoi(int n, String begin, String mid, String end) {
if (n == 1){
System.out.println(begin + "->" + end);
}else {
hanoi(n - 1,begin, end, mid);
System.out.println(begin + "->" + end);
hanoi(n - 1,mid, begin,end);
}
}
}