Discuss / Python / 汉诺塔作业

汉诺塔作业

Topic source

状元刚01

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

本问题的关键是:将move(n,a,b,c)抽象的看成一种将n个盘子从a,通过b移到c的抽象方法,无需了解每一步是怎么做到的;

然后再找到n个盘子移动和n-1个盘子移动之间的联系,即可解决递归问题。

# -*- coding: utf-8 -*-
def move(n, a, b, c):    
    if n == 1:
        print(a, '-->', c)
    else:
        move(n-1, a, c, b) #将n-1个盘子从a,通过c移到b
        move(1, a, b, c) #将一个盘子从a移到c
        move(n-1, b, a, c) #将n-1个盘子从b,通过a移到c

  • 1

Reply