理解汉诺塔的递归规则

understanding recursive rules of tower of hanoi

我是数据结构和算法的初学者,最近偶然发现了汉诺塔算法。我看到汉诺塔规则(递归方法)和冲突的标准方式之间我无法弄清楚的冲突:

根据标准规则:

  1. 在任何给定时间只能在塔之间移动一个圆盘。
  2. 只能删除 "top" 磁盘。
  3. 没有大磁盘可以超过小磁盘。

BUT 根据递归方法:

  1. 将 n-1 个磁盘从源移动到辅助。
  2. 将第 n 个磁盘从源移动到目标。
  3. 将 n-1 个磁盘从辅助移动到目标。

如您所见,这两种方法的第一条规则和第二条规则之间存在差异。

为了帮助您理解第二种方法的含义,当它说 move n-1 disks from source to aux 时,这意味着从 source 的顶部取出 n-1 次,并将顶部的磁盘移动到 aux。所以仍然一次移动一个磁盘,每次都移除顶部磁盘。然后第 n 个磁盘现在位于顶部,因此可以将其移动到目标。现在您可以重复步骤 3。