Home >Backend Development >Python Tutorial >Implementing the Tower of Hanoi method under python

Implementing the Tower of Hanoi method under python

高洛峰
高洛峰Original
2017-03-27 16:37:441775browse

The Tower of Hanoi is an educational toy from an ancient Indian legend. The movement of the Tower of Hanoi can also be seen as a recursivefunction.

We number the columns a, b, c. Moving all the disks from a to c can be described as:
If a has only one disk, it can be moved directly to c;
If a has N disks, which can be regarded as a having 1 disk (chassis) + (N-1) disks. First, you need to move (N-1) disks to b, and then move the last part of a Move one disk to c, and then move (N-1) disks of b to c.
Please write a function, given the input n, a, b, c, print out the steps of movement:
move(n, a, b, c)
For example, input move(2, 'A ', 'B', 'C'), print out:
A –> B
A –> C
B –> C

Background information:
汉Tower of Hanoi: The Tower of Hanoi (also known as the Tower of Hanoi) is an educational toy derived from an ancient legend in India. When Brahma created the world, he made three diamond pillars. On one pillar, 64 gold discs were stacked in order of size from bottom to top. Brahma ordered the Brahmin to rearrange the disks on another pillar in order of size from the bottom. It is also stipulated that the disk cannot be enlarged on the small disk, and only one disk can be moved between the three pillars at a time.
Implementing the Tower of Hanoi method under python

The code is implemented as follows:

def move(n, a, b, c):
    if n==1:
        print a,'-->',c
        return
    else:
        move(n-1,a,c,b)  #首先需要把 (N-1) 个圆盘移动到 b 
        move(1,a,b,c)    #将a的最后一个圆盘移动到c
        move(n-1,b,a,c)  #再将b的(N-1)个圆盘移动到c
move(4, 'A', 'B', 'C')

The above is the detailed content of Implementing the Tower of Hanoi method under python. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn