汉诺塔问题,使用的是递归,将大问题分解成小问题的编程思想。
1 package day8_01_Founcation; 2 /* 3 * 汉诺塔问题 4 */ 5 public class HanoiTowerProblem { 6 public static void main(String[] args){ 7 hannuoiTower(4,'A','B','C'); 8 } 9 /* 10 * 利用递归解决汉诺塔问题 11 * 大问题:将n个盘子从A柱子移到B柱子其中借助C柱子 12 * 小问题: 13 * 将(n-1)个盘子A ---> C 14 * 将大盘子 A ---> B 15 * 将 (n-1)个盘子 C ---> B 16 * 该函数中n表示有几个盘子 ,char from, to, temp; 表示三根柱子 17 */ 18 static void hannuoiTower(int n,char from,char to,char temp){ 19 if(n==0)return; 20 //将(n-1)个盘子A ---> C 21 hannuoiTower(n-1,from,to,temp); 22 //将大盘子 A ---> B 23 System.out.println(from+"----->"+temp); 24 // 将 (n-1)个盘子 C ---> B 25 hannuoiTower(n-1,temp,to,from); 26 27 } 28 }
输出结果
A----->C A----->C C----->A A----->C C----->A C----->A A----->C A----->C C----->A C----->A A----->C C----->A A----->C A----->C C----->A