Вы можете попробовать что-то вроде этого ...
sum(N,X) :-
sum(N,0,X)
.
sum( 0 , X , X ).
sum( N , T , X ) :-
N > 0 ,
T1 is T+N ,
N1 is N-1 ,
sum( N1 , T1 , X )
.
sum( N , T , X ) :-
N < 0 ,
T1 is T+N ,
N1 is N+1 ,
sum( N1 , T1 , X )
.
Все, что вы хотите сделать, это сложить нечетные числа между 0 и N включительно? Я думаю, что это должно сработать:
sum(0,0).
sum(N,X) :-
N > 0 ,
( N mod 2 is 0 , N1 is N-1 ; N1 is N ) ,
sum(N1,0,X)
.
sum(N,X,X) :- N < 0 .
sum(N,T,X) :-
N1 is N - 2
T1 is T+N ,
sum(N1,T1,X)
.