将基本子句添加到递归谓词序言

时间:2019-01-14 12:10:59

标签: prolog infinite-loop

我有一个递归谓词,该谓词陷入无限循环并导致程序崩溃。似乎卡在循环中的谓词如下

parts(sentence(_,VP), P) :-
   parts(VP, P).
parts(vp(V), P) :- parts(V, P).
parts(vp(verb(V), np,( np2,( np2(noun(N)))), [likes(V), what(N)])).

我正在输入R = sentence(np(np(det(an), np2(adj(old), np2(noun(father))))), vp(vp(verb(likes), np(det(a), np2(adj(good), np2(noun(book)))))))以获得输出verb(likes)noun(book)

我已经阅读了一些页面,可能需要在循环中添加一个基本案例以防止其永远存在,但是我不确定如何在代码中实现一个案例。

我只是在徘徊我如何去做这个谓词?是否可以将end函数添加到计数器中以结束该函数并移至下一步?

0 个答案:

没有答案