Tag zusammen, habe folgendes Problem:
Der folgende Algorithmus springt auch bei wahrer if-Abfrage nicht in die Anweisung.
Es ist mir auch nicht möglich einen Breakpoint auf result:=true zu setzen, füge ich einen weitere
Anweisung wie z.B.: col:=6 in den Anweisungsblock, kann ich einen Breakpoint setzen.
Delphi-Quellcode:
function TSudoku.SudokuBacktrack(row,col:integer):boolean;
var
zaehl:integer;
begin
if col = 8 then
begin
inc(row);
if row=8 then //springt nicht in if Abfrage wenn die Bedingung true ist, egal bei welcher Zahl als Bedingung für row
begin
result:=false; //setzen des Breakpoints nicht möglich (wird grün, also Anweisung nicht ausgeführt)
row:=1; //hier ist der Breakpoint möglich
end;
col:=0;
end;
if SudokuFeld[row][col] > 0 then
result:=SudokuBacktrack(row, col+1);
for zaehl:=1 to 9 do
begin
if (CheckCol(Col,zaehl)) and (CheckRow(Row,zaehl)) and (CheckBlock(Row,Col,zaehl)) then
begin
SudokuFeld[row][col]:=zaehl;
if SudokuBacktrack(row, col+1) then
result:=true; //ebenfalls kein Breakpoint möglich
end;
end;
SudokuFeld[row][col]:=0;
result:=false;
end;
Um die Rekursion zu beenden müssen die if-Abfragen jedoch result:=true zurück geben.
Jemand eine Idee,wieso es nicht funktioniert?
Wäre sehr dankbar
Gruß Necz