Prolog中的汉诺塔谜题17 Mar 2025 | 阅读 2 分钟 我们可以使用汉诺塔谜题将圆盘移动到另一个柱子上。 移动方向是从左到右,使用中间柱。这个中间柱就像一个辅助的存放柱。 它包含三个柱子和不同大小的圆盘。在这个谜题中,一次只能移动一个圆盘。这些圆盘按升序排列,这意味着最小的圆盘放在最大的圆盘上。 下图包含 3 个圆盘。在 7 步内,可以解决此谜题。 ![]() 要解决这个谜题,可以使用如下的递归Prolog程序。此程序包含两个子句。 以'_'开头的变量或以'_'填充的变量被称为“不在乎”变量。在Prolog中,任何结构都可以自由地匹配这些变量。 当情况 N=3 由Prolog解决时,将显示以下步骤。 在程序中,单个圆盘的移动可以用第一个子句描述。解决方案将如何递归地获得由第二个子句声明。在第二个子句中,N=3,A=左,B=右,C=中心账户。 对这个声明性子句的理解是正确的。递归子句的声明性解释与过程式阅读密切相关。以下代码显示了过程式解释 N=2 的声明性阅读如下 在上面的代码中,最后两个蕴涵的主体被替换为头部。Prolog目标生成解决方案,你可以看到它。 在Prolog中,三个主要操作描述如下
下一主题列表 & 序列 |
我们请求您订阅我们的新闻通讯以获取最新更新。