我正在尝试在 prolog 中创建一个谓词,如果它达到一组值中的最低数值,它将成立。
例如:
我现在有这样的事情
基本步骤
lowest(Object, Value) :- \+ lessThan(Object, Value, NewValue).
递归步骤
lowest(Object, Value) :- lessThan(Object, Value, NewValue), lowest(Object, NewValue).
其中 Object 是一些抽象对象,可以附加多个数值。
lessThan 返回小于输入值的对象的值 (NewValue)。
而且由于 NewValue将低于 Value 的输入,我可以假设每个递归步骤 Value 都会减少。
我已经从另一个我试图解决的问题中抽象出这个问题,但基本上正在发生的事情是我希望整个递归函数只有 2 个输出,但我得到的输出与lessThan(Object, Initial, X)
+ 2 一样多。
我不确定这个问题是否清楚,请告诉我,以便我澄清。
我相信我的基本步骤是正确的,因为我假设如果 Value 是与 Object 耦合的最低值,那么没有其他值小于 Value。
我也不确定在哪里终止递归,这增加了我的困惑。我的猜测是,一旦达到对象没有较低值的状态,它将终止。