汉诺塔怎么计算出需要移动多少次
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: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)
wuqramy 发表于 2020-4-19 14:47
只要给函数加一个计数器参数
谢谢你,就是有时候不知道该加什么参数,并且参数该加在哪儿,想不通,{:10_243:}
页:
[1]