Rekurencja - procedura nie wywołuje się sama

0

Witam! Mam taką oto procedurę do wyszukiwania drogi w grafie (na razie jej zarys) ale przy sprawdzaniu za pomocą debuggera jej działania zobaczyłem, że dziadostwo nie chce się samo wywołać. Opisane jest to w kodzie. Dodam tylko, że używam Delphi 2005 i pierwszy raz spotykam się z czymś takim. Ktoś może wyjaśnić dlaczego tak się dzieje? Przy trybie pracy krokowej po prostu program przechodzi sobie przez to wywołanie i nic z tego nie robi.

Deklaracja typów:

  type
  TFindRoute = record
    WhereFromIndex : Integer;
    Distance : Integer;
    end;

type
  TNode = record
    X : Integer;
    Y : Integer;
    Connections : array of Integer;
    FindRoute :  TFindRoute;
    end;

Kod:

procedure TForm1.FindPath(StartPointIndex : Integer ; Generation : Integer);
var
i : Integer;
a : Integer;
Index : Integer;
begin

if NodeTable[StartPointIndex].FindRoute.WhereFromIndex = -1 then
  begin
  for Index in NodeTable[StartPointIndex].Connections do
    begin
    NodeTable[Index].FindRoute.WhereFromIndex:=StartPointIndex;
    FindPath(Index,0); // zupełnie ignoruje
    
    end;
  end
end;
0

Może lepiej wklej deklaracje dla NodeTable oraz jej wypełnienie.

0

@Wazka260196 - metoda zostanie wywołana rekurencyjnie tylko wtedy gdy warunek zostanie spełniony oraz jeśli mecierz Connections nie jest pusta; Więc jeśli metoda nie wywołuje się rekurencyjnie to znaczy, że albo warunek nie został spełniony, albo macierz jest pusta;

Sprawdź więc pod debugerem czy warunek zostaje spełniony i co zawiera macierz Connections, a będziesz wiedział dokładnie dlaczego tak się dzieje, a nie inaczej.

1 użytkowników online, w tym zalogowanych: 0, gości: 1