汉诺塔游戏

2022-05-13 09:41:47 浏览数 (1)

游戏目标 : 将左塔的盘子全部移动到右塔上

操作规则 :每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上,操作过程中盘子可以置于A、B、C任一杆上。

递归思想:

假设左塔有N个盘子 1.把1~N-1号盘子从左塔移到中塔 2.把N号盘子移到右塔 3.把1~N-1号盘子从中塔移到右塔

代码:
代码语言:javascript复制
package com.algorithm.practice;

public class Hanoi {                        // 移动方     目标方         中间
    public static void moveHanoi(int N,String left,String right,String middle){
        if (N==1){
            System.out.println("移动1号盘子从" left "到" right);
        }else{
            moveHanoi(N-1,left,middle,right);//1~N-1号盘子从from 移到help
            System.out.println("移动" N "号盘子从" left "到" right);//移动N号盘子到help
            moveHanoi(N-1,middle,right,left);//移动1~N-1号盘子从help到from
        }
    }
    public static void main(String[] args)
    {
        moveHanoi(3,"左","右","中");
    }
}
控制台:

0 人点赞