最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

Prolog 递归

  • 2019-12-11
  • 本文字数:655 字

    阅读完需:约 2 分钟

Prolog 递归

在这一次的 post 中, 我们将要介绍 Prolog 中的递归定义, 也就是说, 一个 predicate 如果它定义了一个或多个引用自己的规则, 那么这个 predicate 就是递归的.


递归的定义非常地简单:


is_digesting(X,Y):-just_ate(X,Y).is_digesting(X,Y):-    just_ate(X,Z),    is_digesting(Z,Y).just_ate(mosquito,blood(john)).just_ate(frog,mosquito).just_ate(stork,frog).
复制代码


is_digesting 就是一个递归地 predicate, 在这个 knowledge base 上, 我们就可以询问 Prolog.


?- just_ate(stork,blood(john)).true
复制代码


虽然我们并没有直接定义这个事实, 不过 Prolog 根绝递归定义地 is_digesting 推出了这个结果.


递归是一种非常强大的定义方式, 但是, 我们也能遇到一切错误, 如果, 你是用下面的这种定义方式, 就会出现无限递归.


is_digesting(X,Y):-is_digesting(X,Y).
复制代码


这个无限递归是非常明显的.


is_digesting(X,Y):-    is_digesting(Z,Y),    just_ate(X,Z).
复制代码


上面的定义初看是正确的, 不过 Prolog 会不断地调用 is_digesting 导致无限递归, 所以这也是错误的.


我们需要正确是使用递归, 使用递归定义式, 要在定义最后添加自己的引用而不是在定义的前面.

关于图片和转载

本作品采用知识共享署名 4.0 国际许可协议进行许可。


  转载时请注明原文链接,图片在使用时请保留图片中的全部内容,可适当缩放并在引用处附上图片所在的文章链接,图片使用 Sketch 进行绘制,你可以在 [](https://draveness.me/draveness.me/sketch-sketch) 一文中找到画图的方法和素材。
复制代码


本文转载自 Draveness 技术博客。


原文链接:https://draveness.me/prolog-di-gui-3


2019-12-11 15:25587

评论

发布
暂无评论
发现更多内容

对线面试官 - HashMap

派大星

HashMap底层原理 Java 面试题

ChatGPT下程序员应该何去何从?

小齐写代码

全球视频编码领域顶级大赛放榜,网易云信首次参赛即斩获H.265赛道多项指标第一

网易云信

音视频 H.265 音视频通话

全球视频编码领域顶级大赛放榜,网易云信首次参赛即斩获H.265赛道多项指标第一

网易智企

音视频技术 H.265

ChatGPT下程序员应该何去何从?

小魏写代码

ChatGPT 新手用ChatGPT

企业做数字化转型,请先避开这5个坑!

优秀

数字化转型

国内常见的16款低代码开发平台介绍

优秀

低代码开发平台 低代码平台 企业级低代码平台

低代码:告别繁琐,提速软件开发

互联网工科生

软件开发 低代码 数字化

JMeter 查看 TPS 数据

Liam

程序员 测试 Jmeter 测试工具 TPS

使用低代码开发,需要注意哪些?

这我可不懂

低代码 应用开发 模型驱动

信创产业未来发展如何

小齐写代码

AI算力爆发,新职业出现,你发现了吗?

小魏写代码

人工智能 AI算力

建设数字工厂:生产订单批量拆分的实现方法

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 7 月 PK 榜

Flink 实践教程:入门(11):MongoDB Sink 的使用

腾讯云大数据

流计算 Oceanus

深度解读低代码

高端章鱼哥

程序员 低代码 低门槛

IDC公布2022中国大数据平台私有化部署市场份额,柏睿数据位列第一梯队

新消费日报

和鲸 ModelWhale 与海光适配认证,“国产 CPU +开发平台” 双轮驱动信创生态建设及 AI 产业应用

ModelWhale

cpu 数字化转型 信创 数据科学 信创产业

信创产业未来发展如何

小魏写代码

信创 信创产业

PoseiSwap 即将开启质押,利好刺激下 POSE通证短时涨超 30%

BlockChain先知

软件测试/测试开发丨Python 内置库 文件处理 学习笔记分享

测试人

Python 程序员 软件测试 文件处理 内置库

[硬核技术] 时序数据预测算法研究:Prophet

乘云 DataBuff

2023 数字生态发展大会,和鲸 ModelWhale 入选中国信通院“铸基计划”《高质量数字化转型产品及服务全景图》

ModelWhale

数字化转型 中国信通院 铸基计划

MobTech秒验,一键登录快人一步!

MobTech袤博科技

前端 App 免密登录 登录验证 秒验

新鲜出炉!Go薪资最高,JS需求量最大!

树上有只程序猿

Java c++ Python 编程语言

人人都有大模型用!大模型ChatGLM2-6B新手速通!

飞桨PaddlePaddle

人工智能 百度 paddle 飞桨 百度飞桨

暑期参加百度网盘AI大赛,夺万元现金、获大厂内推!

飞桨PaddlePaddle

人工智能 百度 paddle 飞桨 百度飞桨

DWS轻量化更新黑科技:宽表加工优化

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 7 月 PK 榜

云图说丨初识华为云OrgID:轻松实现统一帐号、统一授权

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 7 月 PK 榜

什么样的程序员在35岁后仍然保持竞争力?

互联网工科生

程序员 技术 持续学习 经验

聊聊测试当下的求职困境

老张

软件测试 求职面试

大模型时代,企业如何重构 AI 应用落地范式?

Fabarta

Prolog 递归_语言 & 开发_Draveness_InfoQ精选文章