Prolog "Out of local stack" Fehler
Hier ist mein einfaches Prolog-Programm:
friend(X,Y):-
knows(X,Y).
friend(X,Z):-
friend(X,Y),
friend(Y,Z).
knows(brian,tom).
knows(tom,peter).
Wenn ich geben Sie die folgende Abfrage
friend(brian,peter).
Prolog geben Sie die folgende Ausgabe:
?- friend(brian,peter).
true
Wenn ein weiterer Typ ein Semikolon, Prolog sagen:
ERROR: Out of local stack
Was mache ich hier falsch?
InformationsquelleAutor Pingu | 2014-02-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der Fehler ist in der zweiten Klausel. Es sollte stattdessen:
Sonst, wenn Sie Fragen, Prolog für weitere Lösungen ist, dass die
friend/2
Prädikat rekursiv sich selbst aufrufenden ohne zuvor die Gründung einerknows/2
intermediate-Verhältnis. Sie können lernen, mehr über die Fehler in Ihrem Programm durch die Verfolgung der Aufrufe derfriend/2
Prädikat. Versuchen:InformationsquelleAutor Paulo Moura
Verstehen, die die Quelle der nicht-Kündigung in Ihrem Programm, und es genügt zu schauen, die folgende failure-slice:
Es ist, weil der
friend(X, Z) :- friend(X, Y), ...
, dass Ihr Programm wird nicht beendet. Es werden Antworten hervorbringen, hier und da, aber letztlich wird es Schleife. Für mehr, siehe failure-slice.InformationsquelleAutor false