标题:用Python编码描述汉诺塔步骤

2025-03-30 05:25:04
推荐回答(2个)
回答1:

#-*- coding:utf-8 -*-
count = 0
def hano():
    
    def hanoi(n,x,y,z):
        global count
        count += 1
        if n == 1:
            print('Monving %d' % n, 'from ',x,'to',z)
        else:
            hanoi(n-1,x,z,y)
            print('Monving %d' % n,  'from ',x,'to',z)
            hanoi(n-1,y,x,z)
    return hanoi
n = int(input("请输入汉诺塔的层数 :"))
hano()(n,'source','helper','target')
print("The total number of steps required is: ",str(count))

-----------分-割-线-是-我----------------

复制分割线以上的代码,保存为hannoi.py,在python 3 下运行,得到结果如题所示。

回答2:

有a,b,c 三个柱子,有n个从大到小的盘子,大盘子必须一直放在小盘子的下面,借助柱子b将n个盘子从a移到c
这个问题可以分解成下面的子题
先借助柱子c,将n-1个盘子从a移到b: hanoi(n-1,a,c,b)
将第n个盘子从a移到c :print(a,'-->',c)
然后借柱子 a将已经移致b上的n-1个盘子移到c上:hanoi(n-1,b,a,c)
这样就移好了,将原问题分解成规模更小同样的子问题,递归解决,