Discuss / Python / 这问题,真难想啊

这问题,真难想啊

Topic source
def move(n, a, b, c):
    if n == 0:
        return
    else:
        move(n-1, a, c, b)
        print('%s --> %s'% (a, c))
        move(n-1, b, a, c)
        return

思索了半天,总算想出来了。 整体而言,就是三步: A -...-> B(不移动最大的那个盘子) A --> C(即把最大的那个移到C上的那步) B -...-> C(把其他的挪过来) 所以其实就是: 一:三根柱子ACB,把A上盘子移到B上; 二:三根柱子ABC,把A上盘子移到C上;(这里的A上只有一个盘子) 三:三根柱子BAC,把B上盘子移到C上; 三步。

张立勇Zzz

#2 Created at ... [Delete] [Delete and Lock User]

你好,请教下: 你说的三步整体思路我明白。 但没想通为何"三根柱子ACB",就能代表从A移到B上?

即 move(n-1,a,c,b)为什么能表示从A移到B上?

chinagn

#3 Created at ... [Delete] [Delete and Lock User]

回答楼上的,你仔细看这函数,实际上就是第一个移动到第三个,所以改变名称就能代表从A移动到B


  • 1

Reply