fillwith(X,List2):-
length(List2,Y)
,Y>=X;
append(List2,[[]],List3)
,fillwith(X,List3).
这里的问题是,一旦它到达目标,它就会开始做一些奇怪的事情,它会回到它发出的第一个调用。例如:
fillwith(3,List2):-
length(List2,Y)
,Y>=X;
append(List2,[[]],List3)
,fillwith(X,List3).
这里在第一个调用 List2 = [[]],在第二个调用 list2 = [[],[]],在第三个调用 list2 = [[],[],[]]。但是,当它开始(我猜是回溯)时,我最终只接到了第一个电话。