1
나는 3 또는 5로 나눌 수있는 모든 숫자의 제곱의 합을 구하는 프롤로그 프로그램을 가지고 있습니다. 그러나 그것은 하나 이상의 결과를 반환하고 나는 왜 확실하지 않습니다.너무 많은 결과를 반환하는 프롤로그 재귀 프로그램
% --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).
I는 다음과 같은 출력 얻을 :
Sum = 34 ;
Sum = 9 ;
Sum = 25 ;
Sum = 0.
34 만 출력은 I 번째에
감사 쓰기! 나는 프롤로그 하하 (나는 프롤로그에 처음 온 사람)의 컷에 대해 전혀 몰랐다. 나는 lambda 모듈을 살펴볼 것이다 :) – thegalah