题目 打印n层汉诺塔从最左边移动到最右边得全部过程
思路 一共有三根杆,左中右。起始时所有对象都在左杆,且要求下面的对象必须比上面的对象大。如果要移动n个对象,则需要先将上面n-1个移动到中杆上,然后将最底下的对象移动到右杆上,最后将n-1个从中杆上移动到右杆上。时间复杂度:
package algorithm.section8;
public class Hanoi {
public static void hanoi(int N, String left, String mid, String right) {
if (N == 0) return;
hanoi(N - 1, left, right, mid);
System.out.println("move " + N + " from " + left + " to " + right);
hanoi(N - 1, mid, left, right);
}
public static void main(String[] args) {
hanoi(3, "left", "mid", "right");
}
}