汉诺塔的移动问题
这个移动的函数不是很理解:
def move(n, a, b, c):
if n==1:
print a,'-->',c
return
move(n-1,a,c,b)
print a,'-->',c
move(n-1,b,a,c)
求解答
这个移动的函数不是很理解:
def move(n, a, b, c):
if n==1:
print a,'-->',c
return
move(n-1,a,c,b)
print a,'-->',c
move(n-1,b,a,c)
求解答
2019-03-06
刚刚把思路顺好了。
if n==1:
print a,'-->',c
return
1)首先,当n为1时,只需要将A上面的唯一一个移动到C上面;
move(n-1,a,c,b)
2)其次,若n不为1,则将A上面除了最下面最大的盘子之外,也就是n-1个移动到B上面;
print a,'-->',c
3)经过上一步,A现在只有一个盘子了,则只需要将这一个移动到C上面;
move(n-1,b,a,c)
最后一步,就是将B上面的盘子移动到C上。
这是总体的思路从第二步开始就开始有内部的循环了,现在,B上面有n-1个盘子,此时的B就相当于上面讲的A,此时的应为:(n-1,b,a,c)。然后想办法把B上面的移动到c上面。以此类推,直到A,B均为空,C上的盘子按顺序派好,就是整个递归的过程。
举报