1
我有一個Prolog程序,它是爲了找出列表中所有數字的平方和而被三或五整除。然而,它返回多個結果,我不知道爲什麼。Prolog遞歸程序返回的結果太多
% --divisibility tests--
div_test(N):-
% divisible by three?
0 is N mod 3.
div_test(N):-
% divisible by five?
0 is N mod 5.
% sum of an empty list is zero (base case)
square_sum([], Sum):-
Sum is 0.
% --recursive cases
square_sum([Head | Tail], Sum) :-
div_test(Head),
square_sum(Tail, TempSum),
Sum is Head*Head + TempSum.
square_sum([Head | Tail], Sum) :-
square_sum(Tail, TempSum),
Sum is TempSum.
假定下列輸入:
?-square_sum([1,2,3,4,5],Sum).
我得到以下輸出:
Sum = 34 ;
Sum = 9 ;
Sum = 25 ;
Sum = 0.
34是唯一的輸出我應該得到
謝謝!我不知道prolog的削減哈哈(我是Prolog的新手)。我會看看lambda模塊:) – thegalah 2013-04-06 12:30:29