Hanoi问题java实现

来源:互联网 发布:mac怎么清理safari 编辑:程序博客网 时间:2024/05/14 09:58
public class Hanoi {static int count=0;//计算移动完成所需要的移动次数public static void main(String[] args) {hanoi(1,1,2,3);}/** *  * @param n圆盘的总个数 * @param a柱子编号,刚开始所有的圆盘按顺序全部放在a上 * @param b最终目标将所有圆盘按顺序放到b上 * @param c辅助柱子 */public static void hanoi(int n,int a,int b,int c) {if(n>0) {//将上面的n-1块看作一个整体,最下面一块看作一个整体,将n-1块小的按照规则移动到c上,最大的一个移动到b上hanoi(n-1,a,c,b);move(a,b);//将a上的圆盘移动到b上hanoi(n-1,c,b,a);}}/** * 移动圆盘 * @param a   hanoi中的第一个代表的塔座编号 * @param b   第二个代表的塔座编号 */public static void move(int a,int b) {System.out.println((++count)+":塔座"+a+"上的圆盘移动到塔座"+b);}}