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