Du musst nur die Felder, die Du bereits durchsucht hast, markieren. So ungefähr:
Delphi-Quellcode:
Procedure Foo (x,y);
Begin
If Visited (x,y) then exit;
Visited (x,y) := True;
...
End;
Rekursion ist hier sicherlich das Einfachste, aber es geht u.U. schneller... Aber, wenns Dir reicht...