汉诺塔这个程序有点看不懂
汉诺塔游戏不是每次只能移动一个吗为什么注释上说将n-1个移动到y上 意思是接下来的目标就是把剩余的n-1个移动到y上,然后再目标是n-2个,一直递归到1个的时侯return 小甲鱼的铁粉 发表于 2020-10-31 15:33意思是接下来的目标就是把剩余的n-1个移动到y上,然后再目标是n-2个,一直递归到1个的时侯return
那每一次递归y和z都要换一次位置吗 小可爱. 发表于 2020-10-31 15:37
那每一次递归y和z都要换一次位置吗
每次输出的是函数中的x->z,每次递归时传入函数的参数的顺序都会改变,改变的原则就是先把n-1个移动到中间的柱子hanoi(n-1, x, z, y),从x移动到y,把剩余的一个移动到最右边的print(x,"-->",z),再把n-1个移动到最右边hanoi(n-1,y,x,z),从y移动到x,所以调用递归函数时有位置,每次都有xyz之间的相互换位子 考虑三个的情况
A B C
1. A --> B 取最上面两个
2. A --> C 取最下面一个
3. B --> C 取刚刚移动到B的两个
现在有N个小方块,也要做同样的事情
很简单,把最下面的那个单独考虑就可以了。不明白的可以回复我们可以讨论 为啥从N=3开始考虑,因为N=3具有一般性
页:
[1]