Discuss / Python / 每日一小时-第十四天

每日一小时-第十四天

Topic source

Mx

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

def move(n, a, b, c):

    if n == 1:

        print(a, '-->', c)

    else:

        move(n-1,a,c,b)

        print(a, '-->', c)

        move(n-1,b,a,c)

大概逻辑搞出来还是看没 会不会我弄错什么了 晕

#(3)

# ABC         (A --> C)  (abc)     执行if print

# ABC-ACB (A --> B)  (abc-acb) 后执行move(n-1,a,c,b) + print

# ACB-CAB (C --> B)  (abc-bac) 最后 move(n-1,b,a,c) + if print

#(2)

# CAB-ABC (A --> C)  (bac-acb) 重新定义abc成bac

# ABC-BCA (B --> A)  (bac-acb) 后执行move(n-1,a,c,b) +if print

#(1)

# BCA-BAC (B --> C)  (abc-acb) 后执行move(n-1,a,c,b)

# BAC-ABC (A --> C)  (abc-bac) 最后 move(n-1,b,a,c) + if print

Mx

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

搜了下汉诺塔才知道这个是啥..茅塞顿开...没童年

主要是三个柱与三个盘子是由大到小组成

游戏规则:

从A柱开始把1,2,3盘子个个转移, 最终三个都到C柱

始终要保持大盘在最下, 小盘在最上

def move(n, a, b, c):

    if n == 1:

        print('将',n,'从',a,'转',c)

    else:

        move(n-1,a,c,b)

        print('将',n,'从',a,'转',c)

        move(n-1,b,a,c)


  • 1

Reply