2
我在Prolog中有此程序,它從列表中刪除每個第n個元素的元素,如: removenth([1,2,3,4,5,6],2,R)。 它應該返回:R = [1,3,5]。Prolog不返回問值
我有這樣的:
removeallNth(F, N, R):- removeallNth(F, N, 1, R).
removeallNth([], _, _, R).
removeallNth([H|T], N, C, R):- N \== C, Nc is C + 1, concat(R,H,S),
removeallNth(T, N, Nc, S).
removeallNth([_|T], N, C, R):- N == C, removeallNth(T, N, 1, R).
的問題是,它返回真代替 R = [1,3,5]。我檢查了SWI-Prolog調試器,它到達了正確的結果,但它保持檢查的東西。我知道這與統一有關,但我不知道如何應用它。
這是工作,謝謝!我需要充分理解Prolog中的遞歸。它如何從調用堆棧的結尾到開始構造所需的結果。我試圖通過concat在每次迭代中創建結果列表。 – Pravel