Discuss / Python / 交流

交流

Topic source

Geek_MrHowe

#1 Created at ... [Delete] [Delete and Lock User]
# 汉诺塔思想笔记
# 认识汉诺塔的目标:把A柱子上的N个盘子移动到C柱子
# 递归的思想就是把这个目标分解成三个子目标
# 子目标1:将前n-1个盘子从a移动到b上
# 子目标2:将最底下的最后一个盘子从a移动到c上
# 子目标3:将b上的n-1个盘子移动到c上
# 然后每个子目标又是一次独立的汉诺塔游戏,也就可以继续分解目标直到N为1
def move(n, a, b, c):
    if n == 1:
        print(a, '-->', c)
    else:
        move(n-1, a, c, b)# 子目标1
        move(1, a, b, c)# 子目标2
        move(n-1, b, a, c)# 子目标3
n = input('enter the number:')
move(int(n), 'A', 'B', 'C')

看懂了,谢谢

虽然看明白了,但还是有点晕,为什么要那么多参数呢,只要n不行么?

猫之刃

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

可以补充一句,子目标2是分割线,把子目标1和子目标3切成了盘子个数为n-1的两个阉割版汉诺塔游戏。。。 整这么多参数应该是为了更好理解吧。


  • 1

Reply