私はプロローグで1からNまでの要素を持つリストを作成するにはどうすればよいです

LuThe犬:

私は1からNまでの要素を持つリストを作るプログラムを作成しようとしました

increasing(L, N):-
   increasing(L, N, 1).

increasing([X|L], N, X):-
   X =< N,
   X1 is X + 1,
   increasing(L, N, X1).

しかし、いくつかの理由では動作しません。

ウィレム・ヴァン・当社:

問題は最終的に、あなたがへの呼び出しになりますということですincreasing/3どこX <= Nされていない満足が、その後、述語が失敗すること、および全体コールスタックので、「アンワインド」。

あなたは、このように成功します述語ようにする必要がありX > N、たとえばを、:

increasing(L, N):-
    increasing(L, N, 1).

increasing([], N, X) :-
    X > N,
    !.
increasing([X|L], N, X):-
    X =< N,
    X1 is X + 1,
    increasing(L, N, X1).

例えば:

?- increasing(L, 5).
L = [1, 2, 3, 4, 5].

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=33480&siteId=1