游戏目标 : 将左塔的盘子全部移动到右塔上
操作规则 :每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上,操作过程中盘子可以置于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,"左","右","中");
}
}