以下代码将始终写入0。为什么会这样,我该如何解决?

public static void main(String[] args)
{
    int[] Array= {5,4,6,3,7,2,8,1,9,0};
    int max=0;
    System.out.println(maximum(Array,Array.length-1,max));
}

public static int maximum(int[] Array,int length,int max)
{
    if (length!=0)
    {
        if(max<Array[length])
        {
            max=Array[length];
        }

        maximum(Array,length-1,max);
    }

    return max;
}

最佳答案

递归调用maximum时,不会写返回值。

    if (length!=0)
    {
        if(max<Array[length])
        {
            max=Array[length];
        }

        max = maximum(Array,length-1,max); //rewrite max variable
    }

    return max;


编辑

并且需要将第一个max值初始化为Array[0]

int max=Array[0];
System.out.println(maximum(Array,Array.length-1,max));

10-05 21:12
查看更多