Discuss / Python / .py文件的写法

.py文件的写法

Topic source

#-*- coding: utf-8 -*-

def move(n,a,b,c):

    if n == 1:

        print(a,'-->',c)

    else:

        move(n-1,a,c,b)

        move(1,a,b,c)

        move(n-1,b,a,c)

a = 'A'

b = 'B'

c = 'C'

m = int(input('请输入圆盘个数:'))

move(m,a,b,c)

请问各位大大是否有更加简便的写法

fbitct

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

为什么大神的代码没有判断圆盘大小的语句呢,而且在没有判断圆盘大小的语句的情况下,也能完成汉诺塔的移动呢?

因为汉诺塔的初始堆叠方式就是按照“大在下小在上”的方式堆叠的。当使用递归的思维去关联移动n个盘子和移动n-1个盘子间的关系时,你会发现,通过1:将在A柱上较小的n-1个盘子借助C柱移动到柱

因为汉诺塔的初始堆叠方式就是按照“大在下小在上”的方式堆叠的。当使用递归的思维去关联移动n个盘子和移动n-1个盘子间的关系时,你会发现,通过【1:将在A柱上较小的n-1个盘子借助C柱移动到B柱,2:将最大的第n个盘子由A柱移动到C柱,3:将B柱上的n-1个盘子借助A柱移动到C柱】这三个步骤就可以将n个盘子从A柱移动到C柱,而以上的n和n-1的关系与判断盘子大小是没有半毛钱关系的。事实上这个程序只是给出标准的移动步骤,只要初始情况下盘子是按照大下小上的顺序放,最后结果就肯定没错。如果盘子初始摆放就是错的,那么最后的结果也肯定是错的。

a = 'A'

b = 'B'

c = 'C'

相当于 

 a,b,c='A','B','C'


  • 1

Reply