我寫一個程序,這是否:理解序言[列表]
?- pLeap(2,5,X,Y).
X = 2,
Y = 3 ;
X = 3,
Y = 4 ;
X = 4,
Y = 5 ;
X = 5,
Y = 5 ;
false.
(給出了所有對X,X + 1 2和5,以及在端部的特殊情況之間)。
這應該是解決方案。我真的不明白它是如何工作的,有誰能指導我完成它?
pLeap(X,X,X,X).
pLeap(L,H,X,Y) :-
L<H,
X is L,
Y is X+1.
pLeap(L,H,X,Y) :-
L=<H,
L1 is L+1,
pLeap(L1,H,X,Y).
我這樣做只是這樣的:
pLeap(L,H,X,Y) :-
X >= L,
X =< H,
Y is X+1.
爲什麼它不工作(忽略末尾的特殊情況)?