在Prolog中定义规则有问题
如果在Prolog中定义规则有问题,prolog,Prolog,如果B与A结婚,A与B结婚 我知道我这样写会产生一个循环,但我不知道如何防止这种情况 married(man, woman). married(B, A) :- married(A, B) 我也不能做这样的事情 如果父项是子项的父项:- Parent的配偶是Child的父母,可以做两个独立的谓词。首先定义一个列出事实的谓词: parent(Parent, Child) :- parent(married(Parent, Spouse), Child). 然后定义一个谓词: m
B
与A
结婚,A
与B
结婚我知道我这样写会产生一个循环,但我不知道如何防止这种情况
married(man, woman).
married(B, A) :-
married(A, B)
我也不能做这样的事情
如果父项
是子项的父项
:-Parent
的配偶是Child
的父母,可以做两个独立的谓词。首先定义一个列出事实的谓词:
parent(Parent, Child) :-
parent(married(Parent, Spouse), Child).
然后定义一个谓词:
married_fact(philip, elisabeth).
married_fact(william, kate).
married(X, Y) :-
married_fact(X, Y).
married(X, Y) :-
married_fact(Y, X).
parent_fact(phillip, charles).
在古代,你可以为男人保留一个位置,为女人保留另一个位置。
parent(Parent, Child) :-
parent_fact(Parent, Child).
parent(Parent, Child) :-
married(Parent, Spouse),
parent_fact(Spouse, Child).