|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- ef fab(n):
- if n<1:
- print(' error')
- return -1
- if n ==1:
- return 1
- else:
- return fab(n-1)*2+ 1
- i=1
- a=1
- def hanoi( n,x,y ,z):
- if n==1:
- print (x,'-->',z)
- else:
- hanoi(n-1,x,z,y)#将n-1个盘子从x移动到y上
- #print(x,'-->',z)#将最底下的盘子从x移动成z上
- hanoi(1,x,y,z)
- hanoi(n-1,y,x,z)#将y上的n-1个盘子移动到z上
- while i ==1:
- number= int(input('你想玩几个盘子呢:'))
- result =fab(number)
- if result != -1:
- hanoi(number,'A','B','C')
- print ('既然你想玩%d个盘子,我很负责任的告诉你至少要%d步才能完成!.' % (number,result) )
-
复制代码
我想加入一个变量a进行解法的步数显示
如:- 你想玩几个盘子呢:2
- 步骤1:A --> B
- 步骤2:A --> C
- 步骤3:B --> C
- 既然你想玩2个盘子,我很负责任的告诉你至少要3步才能完成!.
复制代码
目前以我的能力 这些步骤几,没有办法实现,请大神指教一下
他讲的方法是对的,用一个全局变量记录步数,但是记录的方法错了,只要在每次打印前放置a+=1就可以了。
- a = 0
- def hanoi(n, x, y, z):
- global a
- if n == 1:
- a += 1
- print("步骤%d:"%a , end = '')
- print (x,'-->',z)
- else:
- hanoi(n-1,x,z,y)#将n-1个盘子从x移动到y上
- hanoi(1,x,y,z)
- hanoi(n-1,y,x,z)#将y上的n-1个盘子移动到z上
- hanoi(3, 'x', 'y', 'z')
复制代码
步骤1:x --> z
步骤2:x --> y
步骤3:z --> y
步骤4:x --> z
步骤5:y --> x
步骤6:y --> z
步骤7:x --> z
[Finished in 0.1s]
|
|