2016-03-07 178 views
-2

您好,我正在嘗試在我的任務之一中實現遞歸。如何實現遞歸

這些是我的課程。

public class Bear implements TotemPole { 

    int bearCount; 
    public Bear(TotemPole rest){} 

    public Bear() { 
    bearCount = 3; 
    } 

    public int power() { 
    return + 5; 
    } 

    public int height(){ 
    return bearCount + 5; 
    } 

    public boolean chiefPole(int bearCount){ 
    if(this.bearCount >= bearCount){ 
     return true; 
    } else { 
     return false; 
    } 
    } 
} 

// SNAKE CLASS

public class Snake implements TotemPole { 

    public Snake(TotemPole rest){} 
    int bearCount; 

    public Snake() { 
    bearCount = 0; 
    } 

    public int power() { 
    return + 3; 
    } 

    public int height(){ 
    return bearCount + 1; 
    } 

    public boolean chiefPole(int bearCount){ 
    if(this.bearCount >= bearCount){ 
     return true; 
    } else { 
     return false; 
    } 
    } 
} 

// EAGLE CLASS

public class Eagle implements TotemPole { 

    int bearCount; 
    public Eagle(){ 
    bearCount = 0; 
    } 

    public int power() { 
    return + 2; 
    } 

    public int height(){ 
    return bearCount + 1; 
    } 

    public boolean chiefPole(int bearCount){ 
    if(this.bearCount >= bearCount){ 
     return true; 
    } else { 
     return false; 
    } 
    } 
} 

基本上我試圖找出遞歸是如何工作的動力()方法。測試人員期望得到26的值。但是,我的代碼不起作用。我是新來的Java所以任何幫助表示讚賞。

//計

p1 = new Bear(
       new Bear(
        new Snake(
         new Snake(
         new Snake(
          new Bear(
           new Eagle())))))); 
+0

我沒有看到任何遞歸 –

+0

那麼你能看到爲什麼測試儀失敗嗎? –

+0

@SailorJerry這個問題不清楚。爲什麼以及如何power()返回26?你指的是哪個類的power()?你知道什麼是遞歸嗎? – user3437460

回答

0

根據您的意見,我認爲您需要爲每個班級添加TotemPole屬性。然後在power()方法中,只需要計算它。例如在Bear類中您可以添加:

class Bear implements TotemPole { 

     int bearCount; 
     TotemPole totem; 
     public Bear(TotemPole totem){ 
      bearCount = 3; 
      this.totem = totem; 
     } 


     public int power() { 
      int result = 0; 
      if(totem == null) { 
       result = 5; 
      } else { 
      result = totem.power() + 5; 
      } 
     return result; 
     } 


     public Bear() { 
     bearCount = 3; 
     } 

     public int height(){ 
     return bearCount + 5; 
     } 

     public boolean chiefPole(int bearCount){ 
     if(this.bearCount >= bearCount){ 
      return true; 
     } else { 
      return false; 
     } 
     } 
    } 

與其他類相同。 希望得到這個幫助。

0
  1. 沒有任何關於Java中的遞歸比在任何其他語言遞歸不同。所以如果你知道遞歸,應該很容易用Java實現。

  2. 你想在這個代碼中實現什麼?

    P1 =新熊( 新熊( 新蛇( 新蛇( 新蛇( 新熊( 新鷹()))))));

你爲什麼傳遞1個對象的引用作爲參數傳遞給另一個類的構造函數?

看看這段代碼,例如:

new Bear(new Eagle()) 

貴熊類有這需要鷹對象作爲參數的構造函數的任何? 編號 你在做什麼和你需要做什麼之間存在差距。

+0

基本上我需要測試儀的輸出等於26.這是通過將所有power()方法一起添加完成的。所以它會是5 + 5 + 3 + 3 + 3 + 5 + 2。我試圖理解如何做到這一點。 –

+0

輸出並不重要。知道是什麼讓你將一個類的對象傳遞給另一個類的構造函數非常重要,這樣你才能理解正確的概念。 – theLearner