- A+
领500g书库,关注公众号:程叫兽的宝藏 (长按可复制!)
热门下载区==>点此链接进入<<<
目录(点击切换)
本文节选自《计算之魂》电子版:
/第2章儿逆向思考一一从递推到递归/图2.1将两个盘子从人A柱移到卫柱我们将上述过程总结为三步:1,、Al一T1;2,、A2一B2;3N=3的情况就复杂得多了,但是依然可以通过不断试错找到移动方法。当先,A柱最上面的那个盘子有两种放法,即放到了T柱上,或者放到了B柱上。接下来,A柱中间的那个盘子只有一种放法,就是放到还没有盘子的那个柱子上。这样一步步下来,要么会把3个盘子按照规定的顺序放到B柱上,要么会放到工柱上,这取决于第一步怎么走。这个情况不动手摆一摆,如果N更大,这个问题就更不好解决了,大到64就很难想清楚了,因为要移动的步骤实在太多了。不过如果倒过来想,我们要想把最底下的第64个盘子从A柱挪至走放到T柱上,然后把最底下的盘子放到B柱上,这个过程还真不容易摘清就变得非常简单。1Ba柱,先要把上面的63个盘
吴军 计算之魂 mobi
子移再把T柱上的所有盘子搬到B柱上。这个想法思路清晰,操作简单。只是它把一个问题县在了空中那63个盘子如何移动?因为规则不允许一次把这63个二盘子移走。起始点,当然我们可以同样定义2、61、型60数量参数,但是操作的方式没有什么不同。在递归的算法中,这个问题我们不用管,因为它只需要复制一次针对64个盘子问题的解法。如果将从A柱到B柱移动64个盘子的算法过程表示为Hanoi(64,动63个盘子的过程则是Hanoi(63,起始点,的地,中间I临时存放位置),那么移目的地,中间临时存放位置)。十]一个盘子的情况,它们拥有不同的067//计算之魂/有了对这个过程统一的描述,我们知道汉诺塔问题其实就是Hanoi(64,A,B,D,并且可以分解为三步。1,Hanoi(63,A,TB):将A柱上的63个盘子挪到T柱,用B柱做
计算之魂吴军下载
中间临时摆放的空间。2,将A柱上的第一个盘子(现在也就剩下这唯一一个盘子了)移到B柱。3,Hanoi(63,TB,A):将T柱上的63个盘子移到B柱,用A柱做中间临时摆放的空间。当然上述过程需要有一个结束条件,那就是当起始柱子上只剩下一个盘子时,直接将它移到目标柱子上。或者说,Hanoi(l,起始点,目的地,中间临时存放位置)的算法是“将盘子从起始点移到目的地”。如果我们再分解一下上述移动64个盘子的过程,可以用图2.2概括每一层操作过程调用的谋套关系。11|Hanoi(1,A,T,B)Hanoi(1.B,A,T)图22汉诺塔问题递归解法中过程调用示意图从图2.2中可以看出,移动64个盘子的过程,调用了两次移动63个盘子的过程,而后者每一次又调用了两次移动62个盘子的过程。当这样不断递归赃套的过程一步068
计算之魂 百度网盘
| 计算之魂 吴军 下载 | 计算之魂网盘 |
| 计算之魂下载 | 计算之魂txt下载 |
| 计算之魂扫描版 | 吴军计算之魂的主要内容 |
综上:吴军计算之魂的主要内容值得推荐阅读

