鱼C论坛

 找回密码
 立即注册
查看: 7032|回复: 4

[已解决]汉诺塔如何添加移动步数计算?

[复制链接]
发表于 2018-3-25 12:18:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x

  1. def hanoi(n,x,y,z):

  2.     if n == 1 :
  3.         
  4.         print(x,'-->',z)

  5.     else:
  6.         
  7.         hanoi(n-1,x,z,y)

  8.         print(x,'-->',z)

  9.         hanoi(n-1,y,x,z)

  10. n = int (input("请输入汉诺塔的层数:"))

  11. hanoi(n,'X','Y','Z')

  12. print("%d 层的塔罗牌移动步数是:%d" % (n,2**n-1))
复制代码


如果不套用公式,有内置的计算步数的函数么?

或者设置一个变量跟着步数+1

把步数+1的方法放到递归里,光出错 . . .加全局变量也没找对位置
最佳答案
2018-3-25 12:25:55
全局吧

  1. num = 0
  2. def hanoi(n,x,y,z):
  3.     global num
  4.     if n == 1 :
  5.         
  6.         print(x,'-->',z)

  7.     else:
  8.         
  9.         hanoi(n-1,x,z,y)

  10.         print(x,'-->',z)

  11.         hanoi(n-1,y,x,z)
  12.     num+=1
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-3-25 12:25:55 | 显示全部楼层    本楼为最佳答案   
全局吧

  1. num = 0
  2. def hanoi(n,x,y,z):
  3.     global num
  4.     if n == 1 :
  5.         
  6.         print(x,'-->',z)

  7.     else:
  8.         
  9.         hanoi(n-1,x,z,y)

  10.         print(x,'-->',z)

  11.         hanoi(n-1,y,x,z)
  12.     num+=1
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-25 12:33:09 From FishC Mobile | 显示全部楼层
本帖最后由 shigure_takimi 于 2018-3-25 12:34 编辑
  1. i = 0
  2. def hanoi(n,x,y,z):
  3.         global i
  4.         if n == 1:
  5.                 i += 1
  6.                 print(i,'...',x,'-->',z)
  7.         else:
  8.                 hanoi(n-1,x,z,y)
  9.                 i += 1
  10.                 print(i,'...',x,'-->',z)
  11.                 hanoi(n-1,y,x,z)
  12. n = 7
  13. hanoi(n,'X','Y','Z')
  14. print('总共需要{}步。'.format(i))  ##  i = 2 ** n - 1
复制代码
  1. ##  输出结果:
  2. 1 ... X --> Z
  3. 2 ... X --> Y
  4. 3 ... Z --> Y
  5. 4 ... X --> Z
  6. 5 ... Y --> X
  7. 6 ... Y --> Z
  8. 7 ... X --> Z
  9. 8 ... X --> Y
  10. 9 ... Z --> Y
  11. 10 ... Z --> X
  12. 11 ... Y --> X
  13. 12 ... Z --> Y
  14. 13 ... X --> Z
  15. 14 ... X --> Y
  16. 15 ... Z --> Y
  17. 16 ... X --> Z
  18. 17 ... Y --> X
  19. 18 ... Y --> Z
  20. 19 ... X --> Z
  21. 20 ... Y --> X
  22. 21 ... Z --> Y
  23. 22 ... Z --> X
  24. 23 ... Y --> X
  25. 24 ... Y --> Z
  26. 25 ... X --> Z
  27. 26 ... X --> Y
  28. 27 ... Z --> Y
  29. 28 ... X --> Z
  30. 29 ... Y --> X
  31. 30 ... Y --> Z
  32. 31 ... X --> Z
  33. 32 ... X --> Y
  34. 33 ... Z --> Y
  35. 34 ... Z --> X
  36. 35 ... Y --> X
  37. 36 ... Z --> Y
  38. 37 ... X --> Z
  39. 38 ... X --> Y
  40. 39 ... Z --> Y
  41. 40 ... Z --> X
  42. 41 ... Y --> X
  43. 42 ... Y --> Z
  44. 43 ... X --> Z
  45. 44 ... Y --> X
  46. 45 ... Z --> Y
  47. 46 ... Z --> X
  48. 47 ... Y --> X
  49. 48 ... Z --> Y
  50. 49 ... X --> Z
  51. 50 ... X --> Y
  52. 51 ... Z --> Y
  53. 52 ... X --> Z
  54. 53 ... Y --> X
  55. 54 ... Y --> Z
  56. 55 ... X --> Z
  57. 56 ... X --> Y
  58. 57 ... Z --> Y
  59. 58 ... Z --> X
  60. 59 ... Y --> X
  61. 60 ... Z --> Y
  62. 61 ... X --> Z
  63. 62 ... X --> Y
  64. 63 ... Z --> Y
  65. 64 ... X --> Z
  66. 65 ... Y --> X
  67. 66 ... Y --> Z
  68. 67 ... X --> Z
  69. 68 ... Y --> X
  70. 69 ... Z --> Y
  71. 70 ... Z --> X
  72. 71 ... Y --> X
  73. 72 ... Y --> Z
  74. 73 ... X --> Z
  75. 74 ... X --> Y
  76. 75 ... Z --> Y
  77. 76 ... X --> Z
  78. 77 ... Y --> X
  79. 78 ... Y --> Z
  80. 79 ... X --> Z
  81. 80 ... Y --> X
  82. 81 ... Z --> Y
  83. 82 ... Z --> X
  84. 83 ... Y --> X
  85. 84 ... Z --> Y
  86. 85 ... X --> Z
  87. 86 ... X --> Y
  88. 87 ... Z --> Y
  89. 88 ... Z --> X
  90. 89 ... Y --> X
  91. 90 ... Y --> Z
  92. 91 ... X --> Z
  93. 92 ... Y --> X
  94. 93 ... Z --> Y
  95. 94 ... Z --> X
  96. 95 ... Y --> X
  97. 96 ... Y --> Z
  98. 97 ... X --> Z
  99. 98 ... X --> Y
  100. 99 ... Z --> Y
  101. 100 ... X --> Z
  102. 101 ... Y --> X
  103. 102 ... Y --> Z
  104. 103 ... X --> Z
  105. 104 ... X --> Y
  106. 105 ... Z --> Y
  107. 106 ... Z --> X
  108. 107 ... Y --> X
  109. 108 ... Z --> Y
  110. 109 ... X --> Z
  111. 110 ... X --> Y
  112. 111 ... Z --> Y
  113. 112 ... X --> Z
  114. 113 ... Y --> X
  115. 114 ... Y --> Z
  116. 115 ... X --> Z
  117. 116 ... Y --> X
  118. 117 ... Z --> Y
  119. 118 ... Z --> X
  120. 119 ... Y --> X
  121. 120 ... Y --> Z
  122. 121 ... X --> Z
  123. 122 ... X --> Y
  124. 123 ... Z --> Y
  125. 124 ... X --> Z
  126. 125 ... Y --> X
  127. 126 ... Y --> Z
  128. 127 ... X --> Z
  129. 总共需要127步。
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-25 12:33:23 | 显示全部楼层

Thank you  

之前全局变量记错了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-19 17:28:16 | 显示全部楼层

i全局变量后函数不能重复用啊...
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-3-9 18:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表