7、Prolog编程中的实用计算、数据结构与递归

Prolog编程中的实用计算、数据结构与递归

1. Prolog中的实用计算

在Prolog中使用表达式时,实际上是在混合不同的知识编码风格。从逻辑角度看,“sum”和“product”是数字之间的关系,就像“father”和“mother”是人与人之间的关系。早期的Prolog会将计算写成逻辑关系的形式,例如:

?- product(3, 4, P), sum(2, P, S), sum(S, 5, What).

但这种方式存在两个问题:一是使用起来不方便,二是会让人误以为Prolog有针对数字的搜索策略,而实际上并没有。因此,现在更多地使用表达式。

如果要实现数值算法,通常需要定义Prolog谓词,因为一般无法在表达式中定义额外的函数。下面来看几个具体的例子。

1.1 定义 close_enough 谓词

定义一个谓词 close_enough/2 ,当两个数字的差值在0.0001以内时,该谓词成功。这样可以在比较浮点数计算结果时避免舍入误差的影响。代码如下:

close_enough(X, X) :-!.
close_enough(X, Y) :- X < Y, Y - X < 0.0001.
close_enough(X, Y) :- X > Y, close_enough(Y, X).
  • 第一个子句处理两个参数相等的情况,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值