You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

用Prolog解决俄罗斯套娃问题时查询返回false的原因是什么

Prolog俄罗斯套娃查询返回false问题解答

核心原因

你遇到的返回false问题是原子拼写不匹配导致的:

  • 知识库directlyIn/2事实中定义的套娃名称是 katarina
  • 你查询时输入的名称是 katerina,两个拼写仅差一个字母,属于完全不同的Prolog原子,无法匹配到已有事实。

Prolog对常量原子的匹配是严格字符一致的,拼写不同的原子会被判定为完全不同的对象,因此查询第一步就匹配失败,最终返回false。

解决方案

将查询中的名称修改为和知识库一致的拼写即可得到正确结果:

?- in(katarina, natasha).
true.

匹配逻辑验证:修改后查询会先匹配到directlyIn(katarina, olga),再递归匹配in(olga, natasha),命中directlyIn(olga, natasha)的事实,最终返回true。

内容的提问来源于stack exchange,提问作者The Coder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 22:54:03