Prolog递归规则错误的结果
我定义了一个递归规则,但结果似乎不正确Prolog递归规则错误的结果,prolog,Prolog,我定义了一个递归规则,但结果似乎不正确 customer(peter,bank(maybank),customertype(personal), citizen(malaysian),age(62),credit(50000), income(3000),property(car) ). isseniorcitizen(X) :- customer(X, bank(_),customertype(_), citizen(malaysian),age(Age),credit(_), in
customer(peter,bank(maybank),customertype(personal),
citizen(malaysian),age(62),credit(50000),
income(3000),property(car) ).
isseniorcitizen(X) :- customer(X, bank(_),customertype(_),
citizen(malaysian),age(Age),credit(_),
income(_),property(_)),
Age >= 60.
lowerinterest(Senior) :- isseniorcitizen(Senior).
isseniorcitizen(peter).
但是SWI序言返回了
X=彼得;
X=彼得
为什么它返回两次而不是一次
请帮忙
谢谢 简单的问题是,你已经说过彼得两次是老年公民;首先,通过将他添加到程序顶部的“数据库”中,然后简单地在程序底部声明他是一名老年公民,从而实现程序中的一阶逻辑。我之前的回答(添加一个切口)也是正确的,但忽略了问题;在发现peter是匹配的原子后,它将取消对统一变量X的搜索,因此不会前进到peter以外的其他X-E。isseniorcitizen(peter)。queryHm,不是isseniorcitizen(X)?isseniorcitizen(peter)是一个事实,应该给出“是”。顺便说一句,您的示例中没有递归(谓词本身调用)。您能提供一些递归规则示例吗?我没有两次指定peter是老年公民。isseniorcitizen(彼得)。这是一个疑问。如何解决?谢谢。把它放进档案里,就成了事实。在提示下输入查询。