我的代码如下:
public int workTimeSum(list of parameter){
int i=0,sum=0,flag=-1;
boolean b=true;
Stack<NonOverlapIntervals> str;
if(st.size()!=1){
b=recursiveCheck(non_overlap_list,st,Ioj);
if(b==false){
st.pop();
}
System.out.println("now size is:"+st.size());
}
str=(Stack<NonOverlapIntervals>) st.clone();
System.out.println("Stack is ss");
while(!str.empty()){
System.out.println(str.pop().self_id);
}
if(b || st.size()==1){
for(NonOverlapIntervals obj:non_overlap_list){
i++;
if(obj.id==ids){
if(st.size()!=1 && object_Present(st,obj)){
continue;
}
else{
st.push(obj);
sum=workTimeSum(non_overlap_list,obj,st,obj.self_id,i);
if(sum_max<sum)
sum_max=sum;
}
}
}
flag=1;
}
else{
return 0;
}
以上是递归代码。
在上面的代码中你需要看到的只是sum
、sum_max
变量。
我正在计算总和,并在每次计算总和时检查它是否大于 sum_max
。
但是由于我在每次调用后都将 sum_max
初始化为零,所以我的 sum_max
变为 0;
如果我将 sum_max
声明为全局变量,问题就可以消除。
但我不允许使用全局变量。
我还尝试传递 sum_max
递归函数的参数,但这不起作用。
最佳答案
如果您只需检查变量是否为 null,则初始化它并将其传递给下一个方法(因此它将被初始化),您可以初始化该变量,而无需第二个方法
//very basic endless example
public void myRecursiveMethod(Object var){
if (var==null){
var = new Object();
}
myRecusivemethod(var);
}
关于java - 在递归中初始化变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18416747/