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

Prolog规则问题:查询指定年份后电影仅返回true而非片名求解

Prolog规则仅返回true不输出电影标题的问题解决

你的规则代码存在变量绑定的问题:

movies_released_after(QYear, QMovie):- movie(M,Y), Y>=QYear.

规则定义的第二个参数QMovie,和规则体里代表电影标题的变量M完全没关联。Prolog不知道你要把符合条件的电影标题M作为结果返回,所以只要数据库里存在满足Y>=QYear的电影,就只会返回true,不会输出具体的电影名。

修正方法很简单,把规则里的变量对应起来就行,两种写法都可以:

  1. 直接在movie谓词里用QMovie作为电影标题变量:
movies_released_after(QYear, QMovie):- movie(QMovie,Y), Y>=QYear.
  1. 显式把M绑定到QMovie上:
movies_released_after(QYear, QMovie):- movie(M,Y), Y>=QYear, QMovie = M.

修改后,比如执行查询movies_released_after(2010, Movie).,Prolog就会返回所有2010年及以后上映的电影标题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 15:57:03