Python 编程训练6:汉诺塔问题

Python 编程训练6:汉诺塔问题

  • 问题描述
  • 程序设计
  • 结果:

问题描述

将圆碟从A移动到C位置,

  • 每次仅能移动一个圆碟,
  • 并且大碟子不能在小碟子上面。

Python 编程训练6:汉诺塔问题_第1张图片

程序设计

def Hanoi(n, A, B, C):
    if n == 1:
        print('move from ' + A + ' to ' + B)

    else:
        Hanoi(n-1, A, C, B)
        Hanoi(1, A, B, C)
        Hanoi(n-1, C, B, A)

def testHanoi():
    print("Hanoi(3, 'a', 'b', 'c'):")
    Hanoi(3, 'a', 'b', 'c')
    print("Hanoi(4, 'a', 'b', 'c'):")
    Hanoi(4, 'a', 'b', 'c')

结果:

>>> testHanoi()
Hanoi(3, 'a', 'b', 'c'):
move from a to b
move from a to c
move from b to c
move from a to b
move from c to a
move from c to b
move from a to b
Hanoi(4, 'a', 'b', 'c'):
move from a to c
move from a to b
move from c to b
move from a to c
move from b to a
move from b to c
move from a to c
move from a to b
move from c to b
move from c to a
move from b to a
move from c to b
move from a to c
move from a to b
move from c to b
>>> 

你可能感兴趣的:(Python 编程训练6:汉诺塔问题)