用Java实现汉诺塔

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个盘子搬到目标柱子上

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值