Java递归问题
这是我的一个类中的一段代码:
public void run() {
SomeClass[][] someClassArray = new SomeClass[6][];
someClassArray[0] = new SomeClass[1];
someClassArray[1] = new SomeClass[4];
someClassArray[2] = new SomeClass[16];
someClassArray[3] = new SomeClass[64];
someClassArray[4] = new SomeClass[256];
someClassArray[5] = new SomeClass[1024];
someFunction(0,0);
}
someFunction(int i, int j) {
if(i == 5) {
someClassArray[i][j].flag = test(i,j); // BASE CASE
}
else {
if(someFunction(someClassArray(i+1,j*4))
&& someFunction(someClassArray(i+1,j*4+1))
&& someFunction(someClassArray(i+1,j*4+2))
&& someFunction(someClassArray(i+1,j*4+3)))
someClassArray[i][j].flag = true;
else
someClassArray[i][j].flag = false;
}
return someClassArray[i][j].flag;
}
class SomeClass {
boolean flag;
// other stuff
}
boolean test(int i, int j) {
// test some property of this coordinate
}
基本上我想要的是只有当下一个数组级别中的四个相应对象的标志也为真时,才将一个SomeClass对象的标志设置为true。不幸的是,我似乎遇到了这个问题:
if(someFunction(someClassArray(i+1,j*4))
&& someFunction(someClassArray(i+1,j*4+1))
&& someFunction(someClassArray(i+1,j*4+2))
&& someFunction(someClassArray(i+1,j*4+3)))
看起来它只是检查第一个条件(我在一个计数器中添加,所以检查someFunction被调用多少次,它只上升到6,而不是我应该得到的1365);您是否无法在Java中的if语句中执行多个函数调用?或者我做错了吗?
(对不起格式化方式;这是我第一次在这里发帖)
没有找到相关结果
已邀请:
2 个回复
翰冒绢县
和
是所谓的短路操作符。这意味着如果结果已知,它们所处的逻辑将立即停止执行。 在你的情况下,这可能意味着第一次调用
的结果是
。因为你只有那条线上的AND,结果不再是
,因此你的其他3次调用不会被执行。 底线:将
改为
,这不会短路,所有的呼叫都会被执行。
遣莫捅炭