Я взял на себя чей-то проект и натолкнулся на функцию, которая принимает условие и проверяет, есть ли у этого условия дочерние элементы. Если да, он проверит, являются ли дети объектами или другими условиями. Если это объект, он пойдет дальше и будет выполнять логику другим образом, если это условие, он продолжит проверку того, что находится под ним, и так далее ....
Я знаю, что это слишком сложно, и я не могу объяснить больше, чем это, но я написал аналогичную логику для сценария.
В моем примере CondtionList
расширяет класс Condition
, и древовидная структура выглядит следующим образом
condition
/ \
object condition
/ | \
object condition object
/ \
object condition
Я пытаюсь сделать рекурсивный вызов многослойной древовидной структуры Condition
. Он работает нормально, пока не доберется до возвращаемого значения, которое повторно вызывает мой рекурсив, прежде чем завершит выполнение этой функции.
Вот мой код:
private boolean[] isNumberEvenOrOdd(Condition condition){
boolean isEven = false;
boolean isOdd = false;
boolean[] isNumberEvenOrOdd = new boolean[2];
if(condition instanceOf ConditionList) {
for(Condition child : ConditionList.getConditions()){
if (child instanceOf ConditionList){
isNumberEvenOrOdd(child);
}
else{
if((Integer)child % 2 == 0) {
isEven = true;
}
else {
isOdd = true;
}
}
}
}
isNumberEvenOrOdd[0] = isEven;
isNumberEvenOrOdd[1] = isOdd;
return isNumberEvenOrOdd;
}
Заранее спасибо за помощь.