Prolog-计算代数的关系
我需要在Prolog中创建关系“generation”,计算两个人之间有多少代人 例如-如果:父亲(a,b)和父亲(b,c),那么a和c之间有两代人 (父亲(a,b)=a是b的父亲,母亲(a,b)=a是b的母亲) 所以第(a,c,N)代将返回2Prolog-计算代数的关系,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
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.