规则就不说了,首先要直到前提也就是其中的规律
假设有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)