2017-10-13 11 views
0

도와주세요! 난 함수 매개 변수로 전달한다 내 구조물은 :구조체가 재귀 함수에서 인수로 전달되는 경우 구조체의 멤버 변수를 초기화하는 방법은 무엇입니까?

내 질의 문맥 코드 sumarised 아래

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 ; 
} 

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; 
      } 
     } 

인 재귀 함수의 전체 코드 이 선언이 유효하지 않다면 이것을 선언하는 다른 방법이 있습니다. 재귀 함수를 사용하고 있습니다. 전체 기능은 다음과 같습니다. 이제 논리를 작업해야하지만 구문이 정확한지 알고 싶습니다.

+0

컴파일됩니까? –

답변

1

코드에 약간의 구문 오류가 있습니다. 예를 들어 :

  • 키워드를
  • 잘못된 개폐 중괄호를 사용.
  • 등 ...

첫 번째는, 나는 당신이 (CodeBlocks로 같은) 일부 C++ IDE를 사용하여 코드를 작성하려고한다고 생각합니다. IDE에서 구문 오류를 발견하게됩니다. 모든 구문 오류를 수정할 때까지 다음 단계에서 사용하는 기능을 고려할 수 있습니다.

0

start(r, c) 대신 을 만들려면 {r, c} 만 있으면됩니다. 그래서보다는 :

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

당신이 원하는 :

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

그러나 나는 의심 해요 can_solve의 각 호출은 solution의 복사본을 가지고. 외부에서 볼 수있는 함수는 solution (한 번)을 만들고이를 내부 함수로 전달해야한다고 생각합니다. 내부 함수는 재귀 적입니다. (이것은 실제로 재귀 함수에 대한 일반적인 패턴입니다. 외부 함수가 함수를 설정하고 내부, 재귀 함수를 호출합니다.)