簡體   English   中英

Prolog初學者錯誤:超出本地堆棧

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM