理解汉诺塔的递归规则
understanding recursive rules of tower of hanoi
我是数据结构和算法的初学者,最近偶然发现了汉诺塔算法。我看到汉诺塔规则(递归方法)和冲突的标准方式之间我无法弄清楚的冲突:
根据标准规则:
- 在任何给定时间只能在塔之间移动一个圆盘。
- 只能删除 "top" 磁盘。
- 没有大磁盘可以超过小磁盘。
BUT 根据递归方法:
- 将 n-1 个磁盘从源移动到辅助。
- 将第 n 个磁盘从源移动到目标。
- 将 n-1 个磁盘从辅助移动到目标。
如您所见,这两种方法的第一条规则和第二条规则之间存在差异。
为了帮助您理解第二种方法的含义,当它说 move n-1 disks from source to aux 时,这意味着从 source 的顶部取出 n-1 次,并将顶部的磁盘移动到 aux。所以仍然一次移动一个磁盘,每次都移除顶部磁盘。然后第 n 个磁盘现在位于顶部,因此可以将其移动到目标。现在您可以重复步骤 3。
我是数据结构和算法的初学者,最近偶然发现了汉诺塔算法。我看到汉诺塔规则(递归方法)和冲突的标准方式之间我无法弄清楚的冲突:
根据标准规则:
- 在任何给定时间只能在塔之间移动一个圆盘。
- 只能删除 "top" 磁盘。
- 没有大磁盘可以超过小磁盘。
BUT 根据递归方法:
- 将 n-1 个磁盘从源移动到辅助。
- 将第 n 个磁盘从源移动到目标。
- 将 n-1 个磁盘从辅助移动到目标。
如您所见,这两种方法的第一条规则和第二条规则之间存在差异。
为了帮助您理解第二种方法的含义,当它说 move n-1 disks from source to aux 时,这意味着从 source 的顶部取出 n-1 次,并将顶部的磁盘移动到 aux。所以仍然一次移动一个磁盘,每次都移除顶部磁盘。然后第 n 个磁盘现在位于顶部,因此可以将其移动到目标。现在您可以重复步骤 3。