1
我正在研究一个谓词,它将计算给定数字的除数。它不会计算所有这些数据,但足以让我知道它有两套以上的因素。这里是我有:Prolog Count除数
countFactors([_,_,_,_X]):-!.
countFactors(Product, Count,Divisor, _X):-
Divisor =< Product/2,
Product mod Divisor = 0,
NewC is Count + 1,
NextD is Divisor + 1,
countFactors(Product,NewC, NextD, NewC).
但是,运行countFactors(16,0,2,X)。只是返回false,而我期望它返回X = 2
编辑:好吧,现在我明白了为什么它返回false:它工作正常,如果除数问题是一个因素,并递归。但是,如果它不是一个因素,那么它会给出错误,但不会递增到下一个除数,它会停止并返回false。
所以我的问题是,我该如何纠正?
对不起,我真的不明白你在这里做了什么。所有这一切都是为任何输入产品返回X = 2。即countFactors(3,0,2,X)。返回X = 2;显然这不是真的... – XavierNuquos 2012-04-11 19:00:47
对不起,我没有调试... – CapelliC 2012-04-11 21:37:35