1768977399 发表于 2020-5-2 18:32:17

想显示汉诺塔的移动次数,为什么次数总是不对

def hanoi(n,x,y,z):
    global times
    times=1
    if n==1:
      print(x,'-->',z)
      times+=1
    else:
      hanoi(n-1,x,z,y)
      print(x,'-->',z)
      times+=1
      hanoi(n-1,y,x,z)
      
n=int(input('层数:'))
hanoi(n,'A','B','C')
print('次数:%d' % times)

liuzhengyuan 发表于 2020-5-2 18:33:28

因为每次函数重新开始执行的时候 times 都会被重新赋值为 1

qiuyouzhi 发表于 2020-5-2 18:35:35

你把times定义在函数外面就好。

xiangjianshinan 发表于 2020-5-2 20:26:32


times=0
def hanoi(n,x,y,z):
    global times
    if n==1:
      print(x,'-->',z)
      times+=1
    else:
      hanoi(n-1,x,z,y)
      print(x,'-->',z)
      times+=1
      hanoi(n-1,y,x,z)
      
n=int(input('层数:'))
hanoi(n,'A','B','C')
print('次数:%d' % times)

楼上的大神已经说啦,如此这般!!!

1768977399 发表于 2020-5-3 08:25:50

xiangjianshinan 发表于 2020-5-2 20:26
楼上的大神已经说啦,如此这般!!!

懂了懂了( ̄ ̄)
页: [1]
查看完整版本: 想显示汉诺塔的移动次数,为什么次数总是不对