[英]Prolog beginner ERROR: Out of local stack
我對 Prolog 編程很陌生。 任何幫助是極大的贊賞。 我有以下程序,
bigger(elephant, horse).
bigger(horse, donkey).
bigger(donkey, dog).
bigger(donkey, monkey).
is_bigger(X, Y) :- bigger(X, Y).
is_bigger(X, Y) :- is_bigger(Z, Y), bigger(X,Z).
在運行查詢時,
?- is_bigger(A, donkey)
我得到以下輸出,
A = horse ;
A = elephant ;
ERROR: Out of local stack
雖然我確實有點理解 A = horse 和 A = pixel 的方式,但我很難理解它為什么無限遞歸(我使用了內置的跟蹤跟蹤謂詞,但在A = pixel之后無法理解它)。
謝謝你。
is_bigger(X, Y) :- is_bigger(Z, Y), bigger(X,Z).
上面一行是導致本地堆棧消息外的那一行。 您再次調用“is_bigger”,再次遞歸地調用“is_bigger”,依此類推
您的輸入: is_bigger(A, donkey)
首先,您要找到比驢大的東西或/和比驢大的東西大的東西。
所以:
is_bigger(X, Y) :- bigger(Z, Y), bigger(X,Z).
為什么?
Y 綁定到驢。
Z 綁定到馬。
作為最后一步,您正在尋找bigger(X, horse)
那有意義嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.