为什么第二个就A -->C了? A--> B只执行一次A就只剩最后一个圆盘了?
为什么答案是 A --> B A --> C B --> C 。。。 为什么第二个就A -->C了? A--> B只执行一次A就只剩最后一个圆盘了?
为什么答案是 A --> B A --> C B --> C 。。。 为什么第二个就A -->C了? A--> B只执行一次A就只剩最后一个圆盘了?
2018-05-10
汉诺塔: # move(n, a, b, c)表示的是有n个盘子在a柱子上,将要移到b柱子上面去 def move(n, a, b, c): # 如果a柱子上面只有一个盘子,则直接移到c柱子上面去并输出路径,结束递归 if n == 1: print a, '-->', c return # 表示的是将n-1的盘子从a柱子上面移到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){ Move(3,A,C,B){ Move(2,A,B,C){ Move(1,A,C,B){} //A->B print A->C //A->C Move(1,B,A,C){} //B->C } print A->B //A->B Move(2,C,A,B){ Move(1,C,B,A){} //C->A print C->B //C->B Move(1,A,C,B){} //A->B } } print A->C //A->C Move(3,B,A,C){ Move(2,B,C,A){ Move(1,B,A,C){} //B->C print B->A //B->A Move(1,C,B,A){} //C->A } print B->C //B->C Move(2,A,B,C){ Move(1,A,C,B){} //A->B print A->C //A->C Move(1,B,A,C){} //B->C } } }
举报