我在理解Prolog中的設計遞歸時遇到了問題。序言列表和遞歸
一些輔助謂詞只是附加到開始分別結束:
add_number(Numbers, N, NewNumbers).
add_letter(Letters, L, NewLetters).
我的目標是把字母和數字列表,並返回兩個名單:號碼列表中出現的順序,遞增減1;和出現相反順序的字母表。這裏是我的推理:
foo([], [], [], [], []).
foo([X|Xs], Nums, NewNums, Letters, Letters) :-
number(X),
X1 is X+1,
add_number(Nums, X1, NewNums),
foo(Xs, ???, ???, Letters, Letters).
foo([X|Xs], Nums, Nums, Letters, NewLetters) :-
letter(X),
add_letter(Letters, X, NewLetters),
foo(Xs, Nums, Nums, ???, ???).
第二個和第四個參數是蓄電池。
然後,它應該叫這樣的:
realfoo(Xs, Nums, Letters) :- foo(Xs, [], Nums, [], Letters).
我怎樣寫代碼?