我試圖在prolog中創建一個謂詞,如果它到達一組值的最低數值,它將保持爲真。Prolog迭代/遞歸向下鑽取到最低值
例如:
我有這樣的事情,此刻
基本步驟
lowest(Object, Value) :- \+ lessThan(Object, Value, NewValue).
遞歸步驟
lowest(Object, Value) :- lessThan(Object, Value, NewValue), lowest(Object, NewValue).
如果對象是一些抽象的對象,它可以有多個數值附加值。
lessThan返回小於輸入值的Object的值(NewValue)。
而且由於NewValue 將低於值的輸入我可以假設每個遞歸步驟的值都會減少。
我已經提取從另一個我正努力解決這個問題,但基本上所發生的事情是,我期望從整個遞歸函數只有2個輸出,而是我得到儘可能多的產出爲lessThan(Object, Initial, X)
+ 2
我不確定這個問題是否清楚,請讓我知道,這樣我可以澄清。
我相信我的基礎步驟是正確的,因爲我假設如果Value是與Object最低的耦合,那麼沒有其他值小於Value。
我不確定在哪裏也可以終止遞歸,這增加了我的困惑。我的猜測是,一旦它達到沒有較低的對象值的狀態,它就會終止。
通話'allLessThan(對象,價值的NewValue)'如果成功,把一個值的NewValue,這比價值的小嗎?如果是這樣,爲什麼叫「全部......」? –
好點,我想我可以使用它了;以交互方式返回(或打印出)'所有'值低於值(並且對於每次迭代,NewValue都會保留新的較低值)。然而,這只是我提出來抽象真正的問題,我現在要改變它。 – Antix