私はPrologを初めて使用します。私は順列の再帰関数を知っています。つまり、次のとおりです。
per([],[]).
per(L, [X|P]) :- del(X,L,L1),per(L1,P).
per([],[])
この関数の論理ツリーを、どの要素を受け取ったときの最後の反復で知りたいのです。
私はPrologを初めて使用します。私は順列の再帰関数を知っています。つまり、次のとおりです。
per([],[]).
per(L, [X|P]) :- del(X,L,L1),per(L1,P).
per([],[])
この関数の論理ツリーを、どの要素を受け取ったときの最後の反復で知りたいのです。
ソニア-あなたは私たちに「del」述語を与えていないので、私たちはそれを実行してあなたに見せることはできません。
すべてのステップ/決定ポイント/バックトラックをダンプする「トレース」述語があることをご存知ですか?
ただ行う:
trace.
per([a,b], X).
次に、プロローグが再帰のベース([]、[])と一致することを確認するまで、Enterキーを押します。次に、Enterキーを押し続けて、タスクが完了するのを確認します。
生成された省略リストをいつでも表示したい場合(つまり、ドット[..]で終わるリストを表示する場合は、「w」-書き込みを押してリストの内容全体をダンプします。
そして最後に、次のことを行います。
notrace.
それをオフにするには。
そして、トレースについて特定の質問がある場合は、欠落している述語を追加し、質問の周囲に部分的なトレースを表示することをお勧めします。