1
我遇到了一個我製作的小程序的問題。以下是有問題的部分。序言和列表問題
failed(X, C, Y) :-
registered_for(
student(id(X),_,_,_,_,_),
course(name(C),year(Y),_),absences(A)),
A>2.
failed(X, C, Y) :-
grades(
course(name(C),year(Y),_),
student(id(X),_,_,_,_,_),_,normal(G),_,_),
G<5.
count_failed(X, C, Y, N) :-
failed(X, C, Y),
append(L, C, L),
length(_,L,N).
前兩行按預期工作。問題在最後一個地方。我想在列表L上添加C,但是我得到的是「錯誤:超出全局堆棧」。我正在使用SWI-prolog。
如果需要我可以發佈剩餘的代碼。在此先感謝您的時間和精力:)
appead用於追加列表 - append(L,C,L)意味着:我想要添加C到列表的所有解決方案都保持不變。 – codecraft 2011-02-28 17:14:18
是的,你可能想要閱讀列表結構,它是prolog的基礎,你不需要像append或findall這樣的函數來實現它。 – codecraft 2011-02-28 17:21:29
如果這是一項家庭作業,你應該添加作業標籤:) – codecraft 2011-02-28 17:22:18