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