2017-10-13 2 views
0

Bitte helfen Sie! meine Struktur, die ich als Parameter an Funktionen übergeben werden, sind:Wie initialisiere ich Member-Variablen einer Struktur, wenn die Struktur als Argument in einer rekursiven Funktion übergeben wird?

sumarised Code im Kontext zu meiner Anfrage

struct mine_index 
{ 
    int row, col; 
}; 
struct miner 
{ 
    bool up, down, right, left; 
}; 

can_solve(mine_index start, mine_index end, miner the_miner) 
{ 
    can_solve(start(row+1,col), end, miner the_miner); 
    return ; 
} 

unten ist der gesamte Code für die rekursive Funktion

bool can_solve(mine_index start, mine_index end, miner the_miner) 
{ 

    bool solution[size-1][size-1] 
    for (int i=0; i<size; i++) 
    { 
     for (int j=0; j<size; j++) 
     { 
      solution[i][j]=0; 
     } 
    } 
    if(start.row==size-1 && start.col==size-1)//base case 
    { 
     solution[start.row][start.row]=1 
     return true; 
     { 
      if(start.row>=0 && start.row<size-1 && start.col>=0 && start.col<size-1) // 
      { 
       solution[start.row][start.col]=1; 
      } 
      if(can_solve(start(row+1,col), end, miner the_miner)) 
      { 
       return true; 
      } 
      if(can_solve(start(row,col+1), end, miner the_miner)) 
      { 
       return true; 
      } 
      if(can_solve(start(row-1,col), end, miner the_miner)) 
      { 
       return true; 
      } 
      if(can_solve(start(start.row,start.col-1), end, miner the_miner)) 
      { 
       return true; 
      } 
     } 

ist Diese Deklaration ist gültig, wenn nicht, gibt es eine alternative Möglichkeit, dies zu deklarieren. Ich verwende eine rekursive Funktion. Die ganze Funktion ist unten angegeben. Ich muss jetzt an der Logik arbeiten, aber ich möchte nur wissen, ob meine Syntax korrekt ist?

+0

Kompiliert es? –

Antwort

1

In Ihrem Code sind einige geringfügige Syntaxfehler enthalten. Zum Beispiel:

  • Schlüsselwort Ende
  • an open-close geschweifte Klammer.
  • etc ...

Das erste, ich glaube, Sie sollten einige C++ IDE (wie als Codeblocks) zu schreiben versuchen, Code. Die IDE wird Ihre Syntaxfehler bemerken. Bis alle Syntaxfehler korrigiert sind, können Sie die Funktion im nächsten Schritt berücksichtigen.

0

Anstatt start(r, c) benötigen Sie nur {r, c}, um eine zu erstellen. Anstatt also:

 if(can_solve(start(row+1,col), end, miner the_miner)) 

Sie wollen:

 if(can_solve({row+1,col}, end, the_miner)) 

Aber Ich bin misstrauisch, dass jeder Aufruf von can_solve seine eigene Kopie von solution hat. Ich denke, die extern sichtbare Funktion muss solution (einmal) erstellen und dann an eine interne Funktion übergeben. Die interne Funktion ist dann rekursiv. (Dies ist eigentlich ein allgemeines Muster für rekursive Funktionen: Eine externe Funktion richtet die Dinge ein und ruft dann eine interne, rekursive Funktion auf.)

Verwandte Themen