2016-01-06 123 views
-1

這組代碼產生了由於無限遞歸導致的堆棧溢出錯誤(至少我認爲是這樣)。我一直在盯着這段代碼很長一段時間,不知道錯誤發生在哪裏。如果有人能夠幫助指出我爲什麼會遇到這樣的錯誤,那就太好了。代碼中的堆棧溢出錯誤

public void DrawValues(Graphics g, Graphics2D g2, int x, int y, int a, int b){ 
     if (b>8){ 
      b = 0; 
      a++; 
      x = 61; 
      y+=66; 
     } 
     if (a==8 && b==8){ 
      g.drawString(String.valueOf(Solver.Rows[a][b]), x, y); 
     } 
     else{ 
      g.drawString(String.valueOf(Solver.Rows[a][b]), x, y); 
      DrawValues(g,g2, x+66, y, a, b++); 
     } 
    } 

它可能會幫助聲明,排在0

+1

你不會在任何地方你的代碼改變'B',你需要'B'等於'8'爲您的代碼來完成。 –

回答

0

一個9x9的二維數組a和b的開始。這是因爲你使用後的增量(B +)而不是預增(+ + b)當您遞歸調用DrawValues方法時。如果使用後增量,則在調用方法後,參數將增加。因此,在你的情況下,變量b永遠不會改變。

這樣,你應該使用預增:

... 
DrawValues(g,g2, x+66, y, a, ++b); 
... 
+0

非常感謝,工作! – AntonioK

+0

@AntonioK歡迎您 –