我的递归函数在我的程序中正在流行。我正在构造一个构造一个相对简单的对象数组并使用特定值填充它们的方法。即对象1具有这些值3,2,5,6,7,对象2具有这些值; 4,5,6,4,5。等等为什么我的递归失败?
递归进来时,我有不同的方法,不同的东西的函数的不同部分。如下图所示:
objectConstructor(Object foo, int switcherVar){
if(switcherVar == 1){
//terminating condition leave method
return 1;
} else {
if(switcherVar == 2){
//do something
objectConstructor(object foo, 1)
}
}
return 0;
}
当我检查我的返回值,我得到一个0。说我实际上做的方法中的东西是不相关的我的递归函数和函数重新只是在它到底骂当它应该跳转到终止条件时,它会下降。从我的理解问题是我格式化我的递归函数的方式。
下面是实际的代码它是一个给飞机座位赋值的飞机座位构造函数,就像它被占用和什么一样。上述内容更容易阅读,但如果我的语法关闭,那也可能是问题。
private int airplaneSeatConstructor(Airplane airplane, String className, int numberOfSeats){
/*Airplane Seat Creator, loops through the seats and attaches credentials to them based on the type of plane
* being formed.*/
//currently only one plane type. 777.
//777 seat number 257
//does have a first class section.
System.out.println("iteration");
if(className.equals("TERM")){
return 1;
}else {
if (className.equals("FIRST")) {
for (int x = 0; x < numberOfSeats; x++) {
airplane.getSeats()[x].setOccupied(false);
airplane.getSeats()[x].setFirstClass(true);
airplane.getSeats()[x].setBusinessClass(false);
if ((x % 4) == 0 || (x % 4) == 3) {
airplane.getSeats()[x].setWindowseat(true);
airplane.getSeats()[x].setAisleSeat(false);
} else {
airplane.getSeats()[x].setAisleSeat(true);
airplane.getSeats()[x].setWindowseat(false);
}
}
System.out.println("in first");
airplaneSeatConstructor(airplane, "BUSINESS", 40);
}
if (className.equals("BUSINESS")) {
for (int x = 0; x < numberOfSeats; x++) {
airplane.getSeats()[airplane.getNumberOfSeatsPerClass()[0] + x].setBusinessClass(true);
airplane.getSeats()[airplane.getNumberOfSeatsPerClass()[0] + x].setFirstClass(false);
airplane.getSeats()[airplane.getNumberOfSeatsPerClass()[0] + x].setOccupied(false);
}
System.out.println("in business");
airplaneSeatConstructor(airplane, "ECONOMY", 209);
}
if (className.equals("ECONOMY")) {
for (int x = 0; x < numberOfSeats; x++) {
airplane.getSeats()[airplane.getNumberOfSeatsPerClass()[0] + airplane.getNumberOfSeatsPerClass()[1] + x].setBusinessClass(false);
airplane.getSeats()[airplane.getNumberOfSeatsPerClass()[0] + airplane.getNumberOfSeatsPerClass()[1] + x].setFirstClass(false);
airplane.getSeats()[airplane.getNumberOfSeatsPerClass()[0] + airplane.getNumberOfSeatsPerClass()[1] + x].setOccupied(false);
}
System.out.println("in economy");
airplaneSeatConstructor(airplane, "SPECIAL", 26);
}
if (className.equals("SPECIAL")) {
System.out.println("in special");
airplaneSeatConstructor(airplane, "TERM", 273);
}
}
return 0;
}
我的打印行都打了,但我仍然从我的返回值0。
我使用递归的唯一原因是更好地理解它。但你的方式更有意义。我的思考过程是有一个功能来设置初始座位值。谢谢,这有助于我的代码的整体设计。 – gemini88mill
也,当我尝试删除我在结束时返回0。 Intellij给我一个错误。 – gemini88mill
IntelliJ抱怨你在最后删除了“return 0”,因为你已经声明你的函数返回一个整数。我也复制和粘贴,并没有意识到这一点。如果你不需要从你的函数返回值,只需放置“void”而不是返回类型。 – Baltasarq