课程
/后端开发
/Python
/初识Python
哈哈哈哈哈哈哈哈哈 move这是个函数吗? 怎么 一会儿n=4 ,一会儿n=3
2018-12-15
源自:初识Python 7-5
正在回答
是按题目给出来的逻辑走的:
def move(n, a, b, c): if n == 1: #如果a只有一个圆盘,可以直接移动到c; print a, '-->', c return #如果a有N个圆盘,执行三步走策略: # 首先需要把 (N-1) 个圆盘移动到 b, move(n-1, a, c, b) # 然后,将 a的最后一个圆盘移动到c, print a, '-->', c # 再将b的(N-1)个圆盘移动到c。 move(n-1, b, a, c) move(4, 'A', 'B', 'C')
n=1的时候就不用解释了吧。主要是以下三步:
move(n-1,a,c,b)print a, '-->', cmove(n-1,b,a,c)
1、当n>1时,需要把“a”柱除最底端圆盘的所有(n-1个)移动到“b”柱,move(n-1,a,c,b)
2、然后把“a”柱剩下的最底端圆盘(即最大圆盘)移动到“c”柱,print a, '-->', c
3、最后把第一步移动到“b”柱的所有圆盘移动到“c”柱,move(n-1,b,a,c)
逻辑就是把n-1个圆盘先移动到过渡位置,最大的移动到目标位置后,再把过渡位置的n-1个圆盘移动到目标位置。剩下的任务就是程序自动递归循环。
move为什么最后是
move(
4
,
'A'
'B'
'C'
)
我知道move(a,c,b)是把b,c交换,如果n不为1就继续交换,直到n为1,打印第一次是从A>C还是A>B
然后move(b,a,c)也是同理,为什么要交换就是因为大盘子不能放在小盘子上面
至于为什么要这样交换我是根据题目给的提示蒙的
n为3结果:
A-->C A-->B C-->B A-->C B-->A B-->C A-->C
波罗僧
举报
学python入门视频教程,让你快速入门并能编写简单的Python程序