1
我斷言這表明它們是小於10Prolog的比較列表元素頭元素
small([H|T],H):- H=<10.
small([_|T],X):-small(T,X).
這是很簡單的所有數字。但是,我應該如何改變它,以便我可以將每個下一個項目與第一個元素進行比較?
例如,小 - ([4,2,3,9,1,0,12],X)。將顯示X = 2; X = 3; X = 1; X = 0?
我斷言這表明它們是小於10Prolog的比較列表元素頭元素
small([H|T],H):- H=<10.
small([_|T],X):-small(T,X).
這是很簡單的所有數字。但是,我應該如何改變它,以便我可以將每個下一個項目與第一個元素進行比較?
例如,小 - ([4,2,3,9,1,0,12],X)。將顯示X = 2; X = 3; X = 1; X = 0?
可以用兩種程序分裂問題,一種採用所述第一元件,然後在該列表的其餘元件,並檢查每個項目是否小於或等於第一元件適用遞歸:
small([M|T],X):- small1(T, M, X).
small1([H|_], M ,H):- H =< M.
small1([_|T], M, X):- small1(T, M, X).
更正:謂詞只顯示*一個*號碼,首先小於10。但是,通過在提示符下按';'強制它回溯。 :) – 2013-04-07 16:29:42