【发布时间】:2019-07-29 07:19:48
【问题描述】:
我在 prolog 中有一个稍微复杂的递归函数。它的作用不是很重要,因为我很确定我的问题在于方法头。
- V 是一个在整个函数中都不会改变的列表
- Vset 是一个列表列表 - 在函数中,我提取其中一个单独的列表,将其乘以列表 V,然后存储该值。该单个列表将从列表列表中删除。
-
Dlist 是一个包含所有计算值的列表
distanceAllVectors(V, [], [H|T]). distanceAllVectors(V, Vset, Dlist) :- #function code here
我已经在 prolog 中跟踪了该函数,并且在某一时刻 Dlist 充满了正确的值,而 Vset 为空。这就是我需要这个函数结束的地方。
我很抱歉没有发布整个代码,但它由几种不同的方法组成,当我 99% 确定这是我的问题的根源时,这些方法需要更多时间来解释。
我对我的基本案例应该是什么以及基本案例在 prolog 中的一般工作方式感到困惑。
谢谢!
【问题讨论】:
-
Prolog 应该在基本情况下警告您有关 singletons 的信息。尝试解决此类警告。