内容提要列表中的一些数字运算,累加器尾递归调用列表中的一些数字运算,累加器关于数字运算最为重要的应用,可能是获取一些数据结构体的一些有用事实,比如列表。例如,知道列表的长度是很有用的。我们将会给出一些使用列表和数字运算的例子。一个列表的长度是多少?这里有一个递归定义: 1. 空列表的长度为0. 2....
分类:
其他好文 时间:
2015-07-16 13:14:22
阅读次数:
179
内容提要Prolog中的数字运算Porlog运算的本质Prolog中的数字运算Prolog语言本身提供了一些基础的运算符号,对整数进行一些操作(即类似...-3, -2, -1, 0, 1, 2, 3等)。多数Prolog的实现同时也提供了一些工具对实数进行操作(比如浮点数,1.53,6.35,等等...
分类:
其他好文 时间:
2015-07-15 22:31:03
阅读次数:
132
练习题4.1Prolog将会如何回答下面的查询? 1. [a, b, c, d] = [a, [b, c, d]]. 2. [a, b, c, d] = [a | [b, c, d]]. 3. [a, b, c, d] = [a, b, [c, d]]. 4. [a, b, c, d] = [a, ...
分类:
其他好文 时间:
2015-07-15 16:37:44
阅读次数:
173
内容提要通过递归对列表进行遍历,从而完成各种操作。member/2这个谓词逻辑通过递归遍历了列表,对列表头部有一些操作,然后递归地对列表尾部做另外一些相同的操作。通过递归遍历列表在Prolog是十分普遍的做法,事实上,我们必须要掌握这项技能。所以我们学习如下的例子。当我们使用列表的时候,我们经常会将...
分类:
其他好文 时间:
2015-07-13 13:38:09
阅读次数:
142
内容提要本章主要介绍使用递归操纵列表的一个实际例子:判断一个元素是否在包含在一个列表中。是时候介绍第一个Prolog中通过递归操纵列表的程序例子了。我们最感兴趣的事情之一是,某个对象是否是列表中的元素。所以,我们想写一个程序,当假设输入是一个对象X和一个列表L,得出结果是X是否属于L。这个程序的名字...
分类:
其他好文 时间:
2015-07-11 14:57:41
阅读次数:
144
内容提要列表定义;合一在列表中的使用;匿名变量;列表定义正如名字暗示的,列表就是多个元素组成的集合。更精确地说,是元素的有限序列。在Prolog中的列表,有如下的一些具体例子:[mia, vincent, jules, yolanda][mia, robber(honey_bunny), X, 2,...
分类:
其他好文 时间:
2015-07-10 18:32:07
阅读次数:
155
在学习了前三章内容后,我们应该对Prolog编程有了直观和理性的认识。由于合一、变量初始化、证明搜索和递归都是Prolog的核心概念,所以有如下更多的一些实践和练习。这里我会先录入题目,后期再给出我自己的程序代码和一些思考。实践1试想有如下的描述迷宫的知识库。其中的事实描述了点和点之间的联通关系,即...
分类:
其他好文 时间:
2015-07-09 08:32:27
阅读次数:
197
练习题3.1 在之前的章节中,我们已经讨论了如下的谓词逻辑: descend(X, Y) :- child(X, Y). descend(X, Y) :- child(X, Z), descend(Z, Y).假设我们将谓词逻辑重构如下: descend(X, Y) :- child(X, Y). ...
分类:
其他好文 时间:
2015-07-08 18:12:34
阅读次数:
183
内容提要规则顺序目标顺序终止Prolog是第一门比较成功的逻辑编程语言。逻辑编程语言内在实现是简单和富有魅力的:程序员的工作简单地说就是描述问题;程序员应该写下(使用语言的逻辑)声明性的规格说明(即,一个知识库),去描述有趣的状态、事实和关系;程序员不应该告诉计算机如何去实现,而他根据问一些问题去获...
分类:
其他好文 时间:
2015-07-07 16:39:02
阅读次数:
171
在Prolog中,谓词可以递归地定义。简要地讲,一个谓词是递归定义的,如果一个或者多个规则的定义中包含了规则自身。例子1:消化考虑如下的知识库:is_digesting(X, Y) :- just_ate(X, Y).is_digesting(X, Y) :- just_ate(X, Z), is_...
分类:
其他好文 时间:
2015-07-07 10:58:07
阅读次数:
335