2017-04-13 45 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 - 我改變了我的答案 –

相關問題