就是函数自己调用自己(有直接递归和间接递归之分),同时函数要有出口。汉诺塔Hanoi问题:
- /**
- * 从p1 移动n个盘子到p3,借助p2(大盘不能在小盘的上面)
- * @param n 盘子个数
- * @param p1 第一根棍子
- * @param p2
- * @param p3
- */
- public void hanoi(int n, int p1, int p2, int p3) {
- if (n == 1) {
- System.out.println("步骤:" + p1 + "-->" + p3);
- return;
- } else {
- // p1-->p2
- hanoi(n - 1, p1, p3, p2);
- System.out.println("步骤:" + p1 + "-->" + p3);
- hanoi(n - 1, p2, p1, p3);
- }
- }
复制代码
|