zzt1758142683 2021-07-25 16:36 采纳率: 85.7%
浏览 47
已结题

用python实现汉诺塔,遇到的一些问题?

img
为什么划红线的x,y,z位置会发生变化,不理解为什么会变化

.
.
.
.
.

img
这个画红线的都是参数吗

  • 写回答

1条回答 默认 最新

  • python xxxyyyxxxyyy 2021-07-28 23:24
    关注

    这个代码很巧妙,主要是运用了递归的思想。首先关于汉诺塔的解决思路,我们把三根柱子分为初始位、过渡位、目标位,注意它们是相对的,不是绝对的。在这一题中,x, y, z代表的并不是三根柱子,而是这三个位。在函数中也是,x, y, z三个参数分别表示初始位、过渡位、目标位,同时我们将三根柱子分为1,2, 3。总的来说,1是初始位,3是目标位。第一步我们需要将初始位上的共(n-1)层挪到2上,即把除最底层的其余的都挪过去,这时候2是目标位,3是过渡位,所以参数排列为x,z,y。然后再把最后一层挪到3,这时候就在3积累了一层了。最后要把剩余的全部挪到3,递归,照着上一步的思路,此时2是初始位,3是目标位,所以参数排列为y,x,z。不断递归,慢慢一层一层搭上去,在3不断积累,达到把全部挪过去的效果。
    由于三个位是相对的,所以位置发生变化。
    如果有用,望采纳!
    如果还有疑惑,再来问我。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 8月10日
  • 已采纳回答 8月2日
  • 创建了问题 7月25日