递归关注的只有两个过程:
- 调用自身
- 结束条件
汉诺塔问题:
- 将 A 柱上的第 n-1 个盘子从 A 经过C移动到 B
- 将 A 柱上的第 n 个盘子移动到 C
将 B 柱上的第 n-1 个盘子从 B 经过 A 移动到 C
public class Demo {
public static void main(String[] args) {
hanoi(3, 'A', 'B', 'C');
}
private static int count;
// 表示将 a 经过 b 移动到 c
public static void hanoi(int n, char a, char b, char c) {
if (n > 0) {
hanoi(n - 1, a, c, b);
System.out.println("第" + ++count + "次:将" + a + "移动到" + c);
hanoi(n - 1, b, a, c);
}
}
}