目标:给定ABC三根柱子,将A柱子上从上到下从小到大套着的n个圆盘搬运到C柱子去
搬运规则:每次只能搬运一个圆盘,小圆盘一定要位于大圆盘之上
其中Hanoi(k,A,C,B)表示将柱子A上的最上面k个圆盘经由C柱子搬运到B柱子
move(k,A,C)表示将序号为k的圆盘从A柱子移动到C柱子
两种思路:1)位置固定,将元素插入位置,即外层循环是遍历位置的序号;2)元素顺序固定,为元素分配位置,即外层循环是遍历元素
两种思路在元素个数和位置个数一样时,效果一样;但在元素个数比位置个数大时,使用思路2)需要剪枝,使用思路1)不需要
第二个函数是递归函数,基于交换来为固定位置分配元素,每次回退时注意要恢复本次向下搜索所做的交换
第二个函数是递归函数,基于赋值来为固定位置分配元素,每次回退时注意要恢复本次向下搜索所做的赋值