我有一个递归谓词,该谓词陷入无限循环并导致程序崩溃。似乎卡在循环中的谓词如下
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
函数添加到计数器中以结束该函数并移至下一步?