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

如何在Prolog中不使用列表实现路线规划谓词ride/3

Prolog ride/3谓词实现方案

你之前的代码存在三个明显问题:

  • 语法错误:子句头括号未闭合,运行时会直接报语法解析错误
  • 构造子不符合要求:需求指定用fromTo嵌套结构,你误用了go作为构造子
  • 缺少递归逻辑:仅能处理直达路线,无法生成中转场景的多层嵌套结构

正确实现代码如下:

% 边界规则:两城市直接连通时,返回单层fromTo结构
ride(X, Y, fromTo(X, Y)) :-
    connection(X, Y).

% 递归规则:先走到相邻中转节点,再拼接后续路线的嵌套结构
ride(X, Y, fromTo(X, Z, RestRoute)) :-
    connection(X, Z),
    ride(Z, Y, RestRoute).

运行测试?- ride(paris,lisbon,X).即可得到你需要的输出:

X = fromTo(paris, barcelona, fromTo(barcelona, madrid, fromTo(madrid, lisbon)))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 15:45:10