2013-03-27 1 views
0

그래서이 함수는 재귀를 사용하여 가장 긴 시퀀스를 찾습니다. increasingSeq.exe에서 0x002871D9에서처리되지 않은 예외 C++ 재귀 오류

처리되지 않은 예외 :가 0xc0000005 : 액세스 위반 쓰기 위치 0x01060EC0하지만 난 그것을 실행할 때마다, 난이 오류 메시지가 표시됩니다. 재귀가 중지 결코 신속하게 스택을 충돌 -

int seqeter(int grid, int startPos, int seq) 
{ 
    Sequence maxseq; 
    maxseq.size = 0; 
    for (int rows=0;rows<MAXROWS;rows++) 
    { 
     for(int cols=0;cols<MAXCOLS;cols++) 
     { 

      if (grid[startPos.x][startPos.y] < grid[startPos.x+rows][startPos.y+cols]) 

      { 
       return seq; 
      } 

      else 
      { 
       maxseq.list[maxseq.size] = grid[startPos.x][startPos.y]; 
       maxseq.size ++; 
      return generateSeq(grid, startPos, seq); 
      } 

     } 
    } 

    return maxseq; 
} 
+0

이 작은 코드는 무한 이상으로 실행됩니다. 동일한 시작 위치가 계속 반복됩니다. –

+0

*** 왜 ***가 재귀 함수입니까? – Johnsyweb

+0

아니요, 이것은 재귀 함수가 아닙니다. – user23573

답변

4

당신은 당신의 startPos에서 발전 아닙니다.

+0

어떻게이 문제를 해결할 수 있습니까? – user1896464

+1

그래서 SO는 숙제/해결 메커니즘이 아닙니다. 귀하의 특정 문제가 지적되었습니다. 알고리즘에 대한 도움이 필요하면 적절한 질문을하고 http://mattgemmell.com/2008/12/08/what-have-you-tried/ – SomeWittyUsername

+0

위 코드를 생각해보십시오. 하지만 메신저에 오류가 발생했습니다. 당신은 그것을 말한다. 왜냐하면 나는 나의 시작점에서 전진하지 않기 때문이다. 하지만 내 시작점에서 어떻게 나아갈 지 설명 할 수 있니? – user1896464

관련 문제