如何实现递归

时间:2016-03-07 06:47:17

标签: java class math recursion addition

您好我正在尝试在我的一个任务中实现递归。

这些是我的课程。

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

基本上我试图弄清楚递归是如何适用于power()方法的。期望得到26的值。然而,我的代码不起作用。我是java新手,所以感谢任何帮助。

// TESTER

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

2 个答案:

答案 0 :(得分:0)

  1. Java中的递归与任何其他语言的递归没有什么不同。因此,如果您知道递归,则应该很容易在Java中实现。

  2. 您希望在此代码中实现什么目标?

    p1 =新熊(                 新熊(                    新蛇(                       新蛇(                          新蛇(                             新熊(                                new Eagle()))))));

  3. 为什么要将1个对象的引用作为参数传递给另一个类的构造函数?

    请查看此代码,例如:

    new Bear(new Eagle())
    

    您的班级熊是否有任何以Eagle对象为参数的构造函数? 没有。 你正在做什么和你需要做什么之间存在差距。

答案 1 :(得分: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;
        }
      }
    }

与其他课程相同。 希望这有帮助。