public class Hannuota{
public static void move (int n,int source,int dest)
{
if(n==1){
System.out.printf(“从%d移到%d%n”,source,dest);
return ;
}
int other=3-source-dest;//假设三个柱子用0,1,2来表示
move(n-1,source,other);
System.out.printf(“从%d移到%d%n”,source,dest);//剩余的哪一个从最开始的那个柱子搬到目标柱子上
move(n-1,other,dest);
}
public static void main(String[] args)
{move (Integer.parseInt(args[0]),0,2);
}
}
搬移思路:递归思想
假设三个柱子source other dest分别用0,1,2来表示
情况一:只有一个盘子,那只需将该盘子直接从源柱子搬到目标柱子就好了
情况二:盘子的个数n大于等于2
步骤一,将n-1个盘子从source柱子搬到other柱子上
步骤二,将source柱子上剩余的最后一个盘子搬到目标柱子上
步骤三,将other柱子上的n-1个盘子搬到目标柱子上
用Java实现汉诺塔
最新推荐文章于 2022-07-12 18:31:30 发布