2012-04-30 69 views
0

我需要使用遞歸來實現我正在試圖實現的方法。問題是這裏的遞歸不像我想的那樣工作。這裏是我的代碼,我將在下面進一步解釋。我的遞歸有什麼問題?

public void printer(int level) { 
    System.out.println("A Car " + getId()); 
    for (int j=0; j< carTypes.size(); j++) { 

     carTypes.get(j).printer(Index.get(j)+1); 
     if (carTypes.get(j) instanceof Toyota) { 
      level = 1; 
     } 
     else { 
      level = 1; 
      for (int i = 0; i <= j; i++){ 
       if (j == Index.size()-1) 
        break; 
       if (Index.get(i) == Index.get(j+1)) { 
        number++; 
       } 
      } 
     } 
     System.out.println("Is recursion working right?"); 

    }//End of for loop 
} 

我遇到的問題是我希望carTypes.get(j).printer(Index.get(j)+1)之後的所有東西;將被忽略,該方法將循環。我知道如果發生這種情況,我將不得不尋找另一個處理我的for循環,但現在,我只是想遞歸工作。我不完全確定我提供的信息是否足夠,如果您需要更多信息,只需詢問我會樂意提供更多信息。

感謝

+0

什麼樣的調試你這樣做的遠? –

+0

我有一種感覺,有幾種任務被混淆到一種方法中;您是否應該有一種知道如何打印單輛汽車的低級方法,以及知道如何在多輛汽車上調用低級方法的高級方法? – sarnold

+0

我基本上只是打開Eclipse中的調試視角(我對編程還很陌生),並試圖確切地知道發生了什麼,但即使這樣也沒有給我具體的東西,因此我決定在這裏發佈它。 – Ester

回答

2

遞歸:從自身調用的方法。

現在,carTypes.get(j).printer(Index.get(j)+1);這行每次調用打印機方法,但在不同的對象上。

所以,實際上你並沒有調用相同的方法printer,因此遞歸沒有發生。

編輯:

我知道,如果發生這種情況,我將不得不尋找另一個對付我的for循環,但現在,我只想遞歸工作。

更換

carTypes.get(j).printer(Index.get(j)+1); 

printer(Index.get(j)+1); 
+0

我現在明白了。謝謝。你會如何建議我讓它工作呢? – Ester

+0

檢查編輯的部分。 – Azodious

+0

啊,謝謝:)它現在工作 – Ester