汉诺塔问题

规则就不说了,首先要直到前提也就是其中的规律

假设有N个盘子:

1最少要移动2的N次方-1次

2前面的盘子不管,最后一个也就是第N个盘子,一定是从1到3


这道题的解法要抽象起来,就是说是1 2 3一共三个柱子,但是除了第三个柱子来说,其他两个柱子之间的角色是可以互换的。

这么说吧,最后也就是最大的盘子要去3时,3肯定是空的,1肯定只有他1个,那么2肯定是除了他之外的那些盘子都是按照规则摆放的!

那么当最大的放过去后就是

1空2N-1个31,因为3上的是最大的,可以视作没有,没盘子也肯定不能移动1也不用管,变成了

1N-1 2 3  ,变成了1N 2 3原始问题的子问题!,这时候就可以用递归了!!!

递归我们知道几个特点

1问题规模不断缩小2第一行肯定有退出条件,这里的条件就是N==1 3不断调用自身



再看这个问题分几步

1把1上除了最下面的都挪到2,有了方法第一次调用hanno(n-1,1,3,2)

2这时已经把最下面的放到3了,剩下的是把2上的n-1个挪到3上,就是hanno(n-1,2,1,3)

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值