2017-04-13 47 views
0

以下代码将始终写入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; 
} 
+0

你得到什么结果呢? –

+0

请详细说明你的意思是“不工作”。 – EJoshuaS

+1

意味着它总是得到0回报 –

回答

2

当您递归调用maximum时,您不写入返回值。

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

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

    return max; 

编辑

,需要初始化第一maxArray[0]

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

非常感谢你 –

+0

@ShahiryarArif另外,它应该是'length!= -1' - 现在,如果最大值是数组中的第一项,它只会给出第二高的数字。 – EJoshuaS

+0

@ShahiryarArif - 我改变了我的答案 –

相关问题