您好我正在尝试在我的一个任务中实现递归。
这些是我的课程。
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()))))));
答案 0 :(得分:0)
Java中的递归与任何其他语言的递归没有什么不同。因此,如果您知道递归,则应该很容易在Java中实现。
您希望在此代码中实现什么目标?
p1 =新熊( 新熊( 新蛇( 新蛇( 新蛇( 新熊( new Eagle()))))));
为什么要将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;
}
}
}
与其他课程相同。 希望这有帮助。