%
% ex6.pl - 例題6: 1からの総和を求める
%

% 元のsumup
sumup(1, 1).
sumup(N, X) :- N1 is N - 1, sumup(N1, X1), X is N + X1.

% バックトラックしても Out of local stackにならない版
sumup1(1, 1).
sumup1(N, X) :- N > 1, N1 is N - 1, sumup1(N1, X1), X is N + X1.

% カットを使用した版
sumup2(1, 1) :- !.
sumup2(N, X) :- N1 is N - 1, sumup2(N1, X1), X is N + X1.
