2017-04-13 6 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

に最初max値を初期化する必要がありますか? –

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

EDIT

そして、あなたはどのような結果を得ているArray[0]

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

ありがとうございました –

+0

@ShahiryarArifまた、 'length!= -1'でなければなりません - 今では、最大値が配列の最初の項目であれば、2番目に高い数値だけを返します。 – EJoshuaS

+0

@ShahiryarArif - 私は私の答えを変更しました –

関連する問題