0
我試圖創建一個具有以下規格的程序:序言 - 從本地堆棧錯誤
N=int
X=int
R=list containing N copies of X
• R=[] if N=0
• N will always be given
• Either X or R will be given
示例結果:
?- fill(4,2,R).
R=[2,2,2,2].
?- fill(4,X,[2,2,2,2]).
X=2.
我有下面的代碼,讓我「出來的本地堆棧錯誤'當我運行第一個填充語句。是什麼造成的?
fill(0,_,[]).
fill(N,X,R) :- N1 is N-1, fill(N1,X,R), append(R,[X], R).
謝謝。我在第二個子句中增加了N> 0。但是,如何讓R在最後返回?當我運行它時,我只是'虛假'。 – rightDrop
在append(R,[X],R] .'中作爲輸入和輸出數據使用兩次'R'似乎是不恰當的,不是'fill(N,X,R): - N1是N- 1,填充(N1,X,R1),追加(R1,[X],R)。?? –
是的,這樣做更有意義,現在它給了我正確的輸出。 – rightDrop