概念解读
其实汉罗塔问题的实质就是利用眼前的这三根柱子,一次只能移动一个圆盘,其中一根作为中介柱,使一根柱子上的圆盘移到另一根上。在移动的过程中不能出现大的圆盘套在小的圆盘的上面。
其实这个问题体现了递归的思想,上面的三种情况列举出来以体现问题的递归性。
上面图片的解释并不完备!
以三个汉罗塔举例:我们要将a柱上的汉罗塔全部移到c上,b柱为中转柱
第一步:我们要设法将a柱上前两个移到b上,再将a柱上最后一个移到c上
第二步:如何将a柱上的前两个移到b上?就是将第一个移到c上将第二个移到b上
第三步: 现在思考如何将c柱上的移到b上?很显然就是一个我们直接一上去。这样就完成了我们第一步的前两个移到b上的步骤。再将a柱上最后一个移到c上。
递归步:现在思考的就是如何将b上的两个,或者是N-1个移到c上的操作。继续重复的操作
以此思想我们可以设计递归算法算法:
void Hanoi(int n,