私のコードは以下の通りです:
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
ましたが、うまくいきません。