私は最初のプロローグのhello worldプログラムを書いたばかりです。Prolog - 事実から得られるすべての値
私は私が参照してくださいしようとしていますこのチュートリアルを見た:
目的:
を私はノードy、ノードXからのパスをチェックしようとしています。私は再帰を使用したいが、基本ケースをどのように与えるかはわからない。 Link(X ,?)の可能性をどのように実行するか。私は(D、B)のパスがあるかどうかを確認しようとしています
:上の画像のように、grand_parent機能はA.
例のすべての可能な出力を与える変数が渡されますそれは、次の反復処理したい:ここ
link(b,d)
link(b,p) -> link(p,d) is false
link(b,c) -> link(c,d) is true so return yes.
を私のコードです:
link(a, b).
link(b, p).
link(b, c).
link(c, d).
link(d, q).
link(d, r).
link(X,Y) :-
for all A links from X:
link(A,Y).
check_for_node(X,Y) :-
node(X),
node(Y).
check_reverse_path(X,Y) :-
link(Y,X).
path(X,Y) :-
check_for_node(X,Y),
link(X,Y).
path(X,Y) :-
check_for_node(X,Y),
check_reverse_path(X,Y).
それを見つけた私は私の質問を編集しました。 – technazi
これはうまくいきません。スタックのオーバーフローを示します。 – technazi