Prolog-计算代数的关系

Prolog-计算代数的关系,prolog,Prolog,我需要在Prolog中创建关系“generation”,计算两个人之间有多少代人 例如-如果:父亲(a,b)和父亲(b,c),那么a和c之间有两代人 (父亲(a,b)=a是b的父亲,母亲(a,b)=a是b的母亲) 所以第(a,c,N)代将返回2 generation (X,Y,N1):- father(Z,Y), generation(Z,Y,N2), N1 is N2+1. generation (X,Y,N1):- mother(Z,Y), generation(Z,Y,N2), N1 is

我需要在Prolog中创建关系“generation”,计算两个人之间有多少代人

例如-如果:父亲(a,b)和父亲(b,c),那么a和c之间有两代人

(父亲(a,b)=a是b的父亲,母亲(a,b)=a是b的母亲)

所以第(a,c,N)代将返回2

generation (X,Y,N1):- father(Z,Y), generation(Z,Y,N2), N1 is N2+1.
generation (X,Y,N1):- mother(Z,Y), generation(Z,Y,N2), N1 is N2+1.

正确吗?

您还需要一个直接关系规则:

generation(X, Y, 1):- father(X, Y), !.
generation(X, Y, 1):- mother(X, Y), !.
另一条规则应更正为:

generation(X, Y, N1):- father(X, Z), generation(Z, Y, N2), N1 is N2+1.
generation(X, Y, N1):- mother(X, Z), generation(Z, Y, N2), N1 is N2+1.