汉诺塔问题
为什么下一步就变成move(n-1,a,c,b)了,n-1能理解,a,c,b是为什么??
为什么下一步就变成move(n-1,a,c,b)了,n-1能理解,a,c,b是为什么??
2017-12-02
def mov(n, a, b, c): #定义函数n为圆盘数量, a为A柱子,b为B柱子,c为C柱子
if n ==1: #判断圆盘数量是否等于1
print a, '-->', c #如果等于,输出函数 A柱子---c柱子
return #跳过当前函数#
mov(n-1, a, c, b) #圆盘数量减1, 将柱子换位置(我是这么理解的)
print a, '-->', c #输出函数 A柱子-----B柱子 看c在第二位相当于定义函数里面的B
mov(n-1, b, a, c) #圆盘数量减1, 将柱子换位置 这个时候如果输出a----c 实际显示出来的是B-----C
a在2号位 c在3号位
mov(4, 'A', 'B', 'C') #运行这个 圆盘数量为4 对应柱子标号a=A b=B c=C的函数
输出结果为
A --> B
A --> C
B --> C
A --> B
C --> A
C --> B
A --> B
A --> C
B --> C
B --> A
C --> A
B --> C
A --> B
A --> C
B --> C
运行步骤
执行刚定义的函数其参数====mov(4, 'A', 'B', 'C' 注意:这个函数里面n=4 a=A b=B c=C
按照函数的步骤 判断n==1 此处不等于则 跳出函数
运行函数mov(n-1, a, c, b)
.。。。。。。。。。。。。。。。。。。
举报