我必須在Prolog中創建一個「大數」關係來計算兩個人之間的曾祖父母的程度。例如,如果某人是另一個人的曾祖父母,它會返回2。使用Prolog來計數曾祖父母在家庭關係中的數量
我只有父母(X,Y)事實,其中X是Y的父母。
我加曾祖(X,Y)謂詞,以找出是否X爲Y的曾祖,實現如下:
great-grandparent(X,Y) :- parent(X,D), parent(D,F), parent(F,Y).
我實現我的greatcount謂詞像這樣:
greatcount(X,Y,1) :- great-grandparent(X,Y), !.
greatcount(X,Y,N1) :- great-grandparent(X,Z), greatcount(Z,Y,N2), N1 is N2+1.
但是,當第一個greatcount關係不匹配時,結果始終爲假(或否)。怎麼來的?
請注意,您正在定義' - (great,grandparent)'形式的規則,因爲'( - )/ 2'是一箇中綴運算符。 – mat