我有代碼在PROLOG:遞歸創建列表
vals(_,[],_).
vals([H|T],[(H,C)|L],K) :- vals([H|T],L,(K,C)).
此代碼的接收機列表和元組的列表,例如:
vals([1],[(1,4),(1,2)],X).
我檢查是否從第一列表元素等於一些元組來自另一個列表的第一個元素。在這種情況下,foundValues將返回true,因爲1等於每個元組的第一個元素。這工作正常,但不是返回true/false,在結果列表中,我想返回每個元組的第一個元素與列表中的元素相等的所有第二個元素。在這種情況下,X應該是[4,2]。我試圖用(K,C)做到這一點,但沒有成功。 所以,問題是 - 如何返回列表?
一個萬一cut 2.
第三個參數的頭部應該是C,但我不知道如何在每次調用後遞歸添加元素到列表中。 – dreamPr
結果會看起來像'[C | R]'。你只需告訴它如何從輸入的尾部得到結果的尾部('R')。這比你想象的容易。 – lurker