java - 在递归中初始化变量

标签 java recursion

我的代码如下:

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;
    }

以上是递归代码。

在上面的代码中你需要看到的只是sumsum_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/

相关文章:

具有一个返回语句的 Java 递归

Java递归函数判断两个连续数字是否相等

c# - 使用递归属性 ASP.NET/C#

recursion - 如何在没有尾递归的情况下在匿名 fn 中进行递归

java - 是否有任何解析器可以将 SQL 转换为树(AST)?

支持歧义的 Java CFG 解析器

Java 数组游戏 - 游戏逻辑概念

java - 二叉搜索树中的递归方法-java

java - 拿走物体的一部分

java - 等待主框架加载时出现 JxBrowser TimeoutException (invokeAndWaitFinishLoadingMainFrame)