def my_print(args):
print args
def move(n, a, b, c):
my_print ((a, '-->', c)) if n==1 else (move(n-1,a,c,b) or move(1,a,b,c) or move(n-1,b,a,c))
注释:汉诺塔模型输入move (n, 'a', 'b', 'c')
例如n=3
move(2,a,c,b)自循环
move(1,a,b,c)
move(2,b,a,c) 自循环
循环完毕,输出
你这段代码也是类似自循环
这张图我觉得你能够解决你的问题。 灰色部分是我自己的原创,其他的借鉴了网上的。
def move(n, a, b, c):
if n ==1: #如果要移动的是第1个盘子
print a, '-->', c #直接将其从a移到c
return
move(n-1, a, c, b) #否则递归移动第1~n-1个盘子到b柱上
print a, '-->', c #此时a柱上只剩第n个盘子,直接将其从a移动到c
move(n-1, b, a, c) #继续递归移动第1~n-1个盘子到c柱上