jack22_22 发表于 2020-4-19 14:34:42

汉诺塔怎么计算出需要移动多少次

def hanoi(n,x,y,z):
    if n == 1:
      print(x,'-->',z)
    else:
      hanoi(n-1,x,z,y) #n-1个盘子从x柱子上接住z柱移动到y柱上
      print(x,'-->',y)#将最底下的盘子从x柱移到z柱上
      hanoi(n-1,y,x,z)#将y柱上的n-1个盘子借助x柱移动到z上

n = int(input('请输入移动的层数:'))
hanoi(n,'X','Y','Z')
#print('需要移动%d次' % count)
想要实现最后一步,怎么做

wuqramy 发表于 2020-4-19 14:47:50

本帖最后由 wuqramy 于 2020-4-19 14:51 编辑

只要给函数加一个计数器参数
def hanoi(num,x,y,z,count):
    if num == 1:
      print(x,' --> ',z)
      count += 1
    else:
      count += 1
      count = hanoi(num - 1,x,z,y,count)
      print(x,' --> ',z)
      count = hanoi(num - 1,y,x,z,count)
    return count
n = int(input('请输入移动的层数:'))
count = 0
count += hanoi(n,'X','Y','Z',count)
print('需要移动%d次!' % count)

jack22_22 发表于 2020-4-19 15:08:06

wuqramy 发表于 2020-4-19 14:47
只要给函数加一个计数器参数

谢谢你,就是有时候不知道该加什么参数,并且参数该加在哪儿,想不通,{:10_243:}
页: [1]
查看完整版本: 汉诺塔怎么计算出需要移动多少次