next up previous contents
Next: Hur Prolog svarar pa Up: Prolog Previous: Strukturer

Rekursiva anrop

Sag att vi vill ta reda pa foregangarna till en person da kan vi istallet for att skriva

predecessor(X,Y) :- 
	parent(X,Y).

predecessor(X,Z) :- 
	parent(X,Y),parent(Y,Z)

predecessor(X,Z) :- 
	parent(X,Y1),
	parent(Y1, Y2),
	parent(Y2, Z),
	   .
	   .
	   .

Sa kan vi med hjalp av rekursiva anrop losa detta problem p[ ett betydligt enklare vis:

predecessor(X,Z) :-
	parent(X,Y),
	predecessor(Y,Z).
Vi har nu skapat ett komplett komplett program for foregangaren(predecessor) relationen som bestar av tva regler Istallet for att skriva en beskrivning for varje tankbar relation soker vi nu rekursivt genom tradet tills ingen relation kan patraffas. Och denna rekursiva sokning tacker alla tankbara foregangare.




1999-05-22