欢迎来到Felix的博客

雨恨云愁,江南依旧称佳丽。水村渔市。一缕孤烟细。天际征鸿,遥认行如缀。平生事。此时凝睇。谁会凭阑意
返回顶部

python编程练习---汉诺塔的实现

汉诺塔游戏

由中间作为中转,将左侧圆盘全部移动到右侧,并且保留从上到下为从小到大的排列顺序

解题思路:
对于一个n层的汉诺塔,如果完成转移工作,首先需要将前n-1层移动到中间位置,再将最底层移动到右侧,之后将中间n-1层移动到右侧,完成全部的移动
整个步骤:
左侧n-1层---》中间,右侧中转
左侧第n层---》右侧
中间n-1层---》右侧,左侧中转

那对于n-1的移动,需要借助递归来完成,整个执行过程如下:

# -*- coding: utf-8 -*-
__author__ = 'felix'
def move(n, A='左侧', B='中间', C='右侧'):
    if n == 1:      #仅有一层
        print(A, "-->", C)  #A直接移动到C
        return
    else:
        move(n-1, A, C, B)  #n-1,C为中转,A---B
        move(1, A, B, C)    #第n,B为中转,A---C
        move(n-1, B, A, C)  #n-1,A为中转,B---C
posted @ 2021-01-12 11:22  felixtester  阅读(416)  评论(0)    收藏  举报