Python实现汉诺塔代码

def hanoi(n,x,y,z):
    if n == 1:
        print(x,'-->',c)
    
    else:
        hanoi(n-1,x,z,y)   
        #将前n-个盘子从x移动到y上
        
        hanoi(1,x,y,z)   
        #将第n个盘子从x移动到z上

        hanoi(n-1,y,x,z)
        #将y上的n-1个盘子从y移动到z上

n = int(input('请输入汉诺塔层数:'))
hanoi = (n,'x','y','z')

学习Python中遇到的实际困难,汉诺塔程序,希望对大家有帮助,

详解如下:

最开始我遇到的困难时定义的hanoi()函数调用的过程中,x,y,z的顺序看不懂,其实换一种思想,

不论怎么移动,都可以将三根柱子分为,起始柱,辅助柱,目标柱

第一步:将n-1个盘子从x移动到y                      实际情况是:x为起始柱,z为辅助柱,y为目标柱

第二步:将第n个盘子从x移动到z                     实际情况是:x为起始柱,y为辅助柱,z为目标柱

第三步:将在y柱上的n-1个盘子从y移动到z      实际情况是:y为起始柱,x为辅助柱,z为目标柱

故调用结果为:

haooi  (n-1,x,z,y)

hanoi  (1,x,y,z)

hanoi  (n-1,y,x,z)

希望对大家有帮助!!!

你可能感兴趣的:(汉诺塔,python,算法)