私はまだPrologのロジックを理解しようとしており、問題を抱えています。 再帰呼び出し内で見つかった値を保存したり、収集したりしようとしています。このようにProlog - 再帰呼び出しの結果を保存するにはどうしたらいいですか?
:その後、それらを使用することができます
main([]) :- !.
main([H|Tail]) :- findall(X,something(_,_,X),R),
getValueReturn(R,H,Lin, Lout),
main(Tail).
% X is the Head from main
getValueReturn([H|Tail],X,Lin, Lout) :- subset(X, H) ->
findall(A,something(A,_,H),L1),
append(Lin,L1,Lout),
getValueReturn(Tail,X,Lout,L)
;
getValueReturn(Tail,X,Lin,Lout).
私は、getValueReturnでのfindAllから結果を収集し、それらを組み合わせて、バックメインにそれらを送信したいと思います。 getValueReturn内のリストを作成して追加するにはどうすればよいですか? 同様に、すべての再帰呼び出しのためにメインにリストを保存するにはどうすればよいですか?
EDIT:
は私がトレースを介してこれを実行すると、空のリストが発見された場合ただし、リストには、すべての要素を削除し、コメント返信ごとに上記のコードを編集しました。
私は間違っていますか?再帰を使ってリストを構築するという概念を使用しようとするのは初めてです。
一部のリストにリストを追加することも、結果リストを変数の先頭にすることもできます。 –
結果のリストを変数の先頭にすることはどういう意味ですか?私のLをLに解体し、残りの部分でgetValueReturnを呼び出しますか?しかし、それでは、私のfindallの結果はどうやってそれに保存されますか? – Pain
すでにfindallの結果をパラメータとして与えています。 –