我有一個名爲myfor
的迭代器,當我打電話給myfor(3,7,X).
時,我希望它返回X = [3, 4, 5, 6, 7]
。但是,此代碼僅返回X = [4, 5, 6, 7]
。它跳出第一個。誰能告訴我什麼是錯的?Prolog iteration off by 1
myfor(A, A, []) :- !.
myfor(Start,End, Z) :-
End > Start,
NewValue is Start+1,
myfor(NewValue,End, L),
append([NewValue], L, Z).
你可以把它通過刪除第二個子句中的最後一行並將頭部更改爲myfor(開始,結束,[開始| L]):-'來遞歸尾遞歸。擺脫追加電話。 – twinterer 2012-03-09 07:41:13
@twinterer謝謝! – 2012-03-09 08:21:57